【问题标题】:how to access fields in has_many belongs to association如何访问has_many中的字段属于关联
【发布时间】:2012-03-19 09:35:21
【问题描述】:

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

【问题讨论】:

  • prasvin ..是的,我也尝试过 dat,但由于未定义的方法“emailid”而出现错误
  • sryy 我的错误...给出了错误的字段名...它的 nw 正在运行 fyn...。谢谢

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多