ruby-on-rails Rails:has_many到不返回结果

fjnneemd  于 2023-03-20  发布在  Ruby
关注(0)|答案(1)|浏览(165)

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不起作用。
任何关于如何解决这个问题的帮助将是伟大的,谢谢。

jucafojl

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关联文档

相关问题