根据Rails文档,可以使用has_many:through作为快捷方式:
has_many:through关联对于设置也很有用 通过嵌套的has_many关联进行“快捷方式”。例如,如果 文档有很多节,而一个节有很多段落,您可以 有时想要获得所有段落的简单集合 文献。
因此,我们假设有以下代码:
class User < ApplicationRecord
has_many :sub_users
has_many :settings
end
class SubUser < ApplicationRecord
belongs_to :user
has_many :settings, through: :user
end
class Setting < ApplicationRecord
belongs_to :user
end
基于此,如果我运行user.settings.new
,则会得到一个Setting
设置为user_id
的新user.id
实例。
太好了。但是,如果我运行sub_user.settings.new
,则会得到一个新的Setting
实例,而该实例没有将user_id
设置为sub_user.user.id
。
这是预期的行为吗?
答案 0 :(得分:0)
我不会使用has_many through:
,delegate
似乎是最好的主意https://apidock.com/rails/Module/delegate
class SubUser < ApplicationRecord
belongs_to :user
delegate :settings, to: :user
end
您当前的代码不是has_many through
的用途,请检查停靠处,关系是否不同https://guides.rubyonrails.org/association_basics.html#the-has-many-through-association