bounty将在6天后过期。回答此问题可获得+200的声誉奖励。opensource-developer正在寻找来自声誉良好的来源的答案。
我们最近按照Rails指南中的步骤将Rails升级到了5.1,但是发现下面的步骤不起作用。
class User < ActiveRecord::Base
has_many :members, :dependent => :destroy
has_many :user_accounts, :dependent => :destroy
end
class Member < ActiveRecord::Base
belongs_to :user
has_many :user_accounts, :through => :user
end
class UserAccount < ActiveRecord::Base
belongs_to :user
end
例如当我试图执行
x一个一个一个一个x一个一个二个x
正在使用NULL
检查用户
应该是users.id,也就是109。
值得一提的是,同一个Member
模型在使用through
时与其他工作的模型有其他关系。
member.stores
member.credit_cards
但是member.user_accounts
不起作用。
任何关于如何解决这个问题的帮助将是伟大的,谢谢。
1条答案
按热度按时间jucafojl1#
has_many :through
关联适用于多对多关系。成员模型中的belongs_to :user
定义返回单个对象,但has_many :through
关联需要through
定义中的对象集合。因此,此关联将不起作用。要访问某个成员的所有用户帐户,您需要首先从Membermodel
has_many :user_accounts, :through => :user
中删除此关联,然后执行以下方法之一:1.使用
member.user.user_accounts
1.在Member模型上指定
delegate
指令,如下所示delegate :user_acconts, to: :user
并使用member.user_accounts
请参阅此处的
has_many :through
关联文档