加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails Rich Associations – 未定义的方法错误

发布时间:2020-12-17 03:48:08 所属栏目:百科 来源:网络整理
导读:我有三个与我合作的基本模型: class User ActiveRecord::Base has_many :assignmentsendclass Assignment ActiveRecord::Base belongs_to :group belongs_to :user endclass Group ActiveRecord::Base has_many :assignmentsend 使用这个模式,我假设“Assig
我有三个与我合作的基本模型:

class User < ActiveRecord::Base
  has_many :assignments
end

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

class Group < ActiveRecord::Base
  has_many :assignments
end

使用这个模式,我假设“Assignment”模型是连接表的一种,它保存用户属于哪些组的信息.所以,我想要做的是,使用User对象,找出它们属于哪些组.

在Rail控制台中,我正在执行以下操作:

me = User.find(1)

它返回用户对象,应该如此.然后,我试图看看这个用户属于哪个“组”,我认为它将通过“Assignment”模型.但是,我显然做错了什么:

me.groups

哪个回报:

NoMethodError: undefined method `groups' for #<User:0x007fd5d6320c68>

我怎样才能找出“我”对象属于哪个“群组”?

非常感谢!

解决方法

您必须在每个模型中声明用户 – 组关系:

class User < ActiveRecord::Base
  has_many :assignments
  has_many :groups,through: :assignments
end

class Group < ActiveRecord::Base
  has_many :assignments
  has_many :users,through: :assignments
end

另外,我建议您在Assignment模型上设置一些验证,以确保Assignment总是引用一个组和一个用户:

class Assignment < ActiveRecord::Base
  belongs_to :group
  belongs_to :user  
  validates :user_id,presence: true
  validates :group_id,presence: true
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读