在Rails 4中有很多条件

时间:2013-12-05 18:30:38

标签: ruby-on-rails activerecord model-associations

如何做到这一点:

 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

提前致谢。

2 个答案:

答案 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

假设空间映射也属于某个类别。