如何做到这一点:
has_many :space_mappings, -> { where(group_id: group_id) }, through: :category
那就是 - SpaceMapping和这个模型都有一个group_id,他们必须匹配。我可以做一个方法,但我希望这是可能的。
我得到:
undefined local variable or method `group_id' for #<ActiveRecord::Relation::ActiveRecord_Relation_SpaceMapping:0x007fe5ac118bd8>
我这样做了:
def space_mappings
category.space_mappings.where(space_id: Space.where(group_id: group_id))
end
提前致谢。
答案 0 :(得分:1)
您必须为category_id指定一个值。
见http://guides.rubyonrails.org/association_basics.html(4.3.3.1节)。 它可以帮助您理解细节和清晰的概念。
答案 1 :(得分:1)
如果“此模型”具有belongs_to :category
关系或has_one :category
关系,那么您根本不需要where
条款。 “有很多通过”的要点是将相关模型限制为与它们关联的模型相关联的模型到
也就是说,你应该能够做到
belongs_to :category
has_many :space_mappings, through: :category
假设空间映射也属于某个类别。