how to get the reference?

35 views
Skip to first unread message

Zlodiak Zlodiak

unread,
Jun 14, 2015, 3:27:56 AM6/14/15
to rubyonra...@googlegroups.com
please help solve the problem.

There is a table users:
id :integer, autoincrement
name :string
gender_id :integer

There is a table genders:
id :integer, autoincrement
gender_name :string

model User:
class User < ActiveRecord::Base
belongs_to :gender
end

model Gender:
class Gender < ActiveRecord::Base
has_many :users
end

I need the gendername. I try to do so:
<% @users.each do |user| %>
<div class="col-xs-6"><%= user.name %></div>
<div class="col-xs-2"><%= user.gender_id %></div>
<% end %>

the result is output number, but I need to gendername




p.s.
so I tried:
<div class="col-xs-2"><%= user.gender.gender_name %></div>

in this case receives the following error message:
undefined method `gender_name' for nil:NilClass

--
Posted via http://www.ruby-forum.com/.

Colin Law

unread,
Jun 14, 2015, 5:41:29 AM6/14/15
to rubyonra...@googlegroups.com
On 14 June 2015 at 08:27, Zlodiak Zlodiak <li...@ruby-forum.com> wrote:
> ...
> so I tried:
> <div class="col-xs-2"><%= user.gender.gender_name %></div>
>
> in this case receives the following error message:
> undefined method `gender_name' for nil:NilClass

One of your users does not have a gender associated, so user.gender is nil
try <div class="col-xs-2"><%= user.gender.gender_name if user.gender %></div>

Colin

Zlodiak Zlodiak

unread,
Jun 14, 2015, 7:42:04 AM6/14/15
to rubyonra...@googlegroups.com
thanks!
Message has been deleted

Colin Law

unread,
Jun 14, 2015, 4:38:17 PM6/14/15
to rubyonra...@googlegroups.com
On 14 June 2015 at 18:55, Elizabeth McGurty <emcg...@gmail.com> wrote:
> Just wondering why you don't validate the presence/absence of gender_name on
> creation of a new record...

I think it is not gender_name that is missing, but the gender object itself.

Colin
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/63e2564a-c5a0-4043-94da-3b110971fb8e%40googlegroups.com.
>
> For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
Message has been deleted
0 new messages