как получить доступ к полям в has_many принадлежит ассоциации - PullRequest
0 голосов
/ 19 марта 2012

Моя проблема в том, что я хочу показать emailids пользователей, которые в настоящее время являются членами этой конкретной группы, но я не понимаю, как это сделать.Я пробовал разные комбинации, но все еще не могу делать то, что хочу ...


Я использую has_many через ассоциацию следующим образом:

class Group < ActiveRecord::Base
  has_many :memberships , :dependent => :destroy
  has_many :users, :through => :memberships
end

class Membership < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end

class User < ActiveRecord::Base
  has_many :memberships, :foreign_key => "user_id",:dependent => :destroy
  has_many :groups, :through => :memberships  
end

Внутриmy group/show.html.haml, я выполняю следующий цикл и хочу показать emailids членов этой конкретной группы:

%table
      - @group.memberships.each do |membership| 
        %tr
          %td= membership.user_id.user.emailid
          %td= membership.role

В приведенном выше коде %td= membership.role работает нормально, что означает, что язапускаю петлю правильно.Я не могу правильно написать %td= membership.user_id.user.emailid код.Я получаю сообщение об ошибке следующим образом:

undefined method `user'**

Как получить доступ к emailid пользователей, которые в настоящее время являются членами этой группы?

1 Ответ

1 голос
/ 19 марта 2012

На самом деле membership.user_id получает идентификатор пользователя, который по сути является Fixnum.Таким образом, вызов .user на Fixnum приводит к ошибке.

Вместо этого вы можете просто сделать membership.user, который предоставляет объект пользователя, а затем вызвать другие методы для него как membership.user.emailid

...