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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |