如何访问has_many中的字段属于关联

时间:2012-03-19 09:35:22

标签: ruby-on-rails associations has-many-through

我的问题是我想要显示当前该特定群组成员的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

在我的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 个答案:

答案 0 :(得分:1)

实际上membership.user_id会为您提供用户的ID,它实际上是一个Fixnum。因此,在Fixnum上调用.user会导致错误。

相反,您可以简单地执行提供用户对象的membership.user,然后将其他方法调用为membership.user.emailid