Ruby on rails 一个带“的模型;有“你”和“你属于”很多“吗如何通过id列表进行查询?
我有一个Model1模型,其中包含:Ruby on rails 一个带“的模型;有“你”和“你属于”很多“吗如何通过id列表进行查询?,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我有一个Model1模型,其中包含: has_and_belongs_to_many :child_items 是否可以通过id列表查询子项?比如: model1.child_items.where(id: [1, 2, 3]) 是的,我能做到: ChildItem.where(id: [1, 2, 3]) 但是通过Model1它会更好,因为我认为会有一个连接,不仅需要child\u项,而且那些真正属于Model1,并且可能在[1,2,3]之间的项目也可能需要其他ID 因此,我怎样做呢 我
has_and_belongs_to_many :child_items
是否可以通过id列表查询子项?比如:
model1.child_items.where(id: [1, 2, 3])
是的,我能做到:
ChildItem.where(id: [1, 2, 3])
但是通过Model1
它会更好,因为我认为会有一个连接,不仅需要child\u项
,而且那些真正属于Model1
,并且可能在[1,2,3]之间的项目也可能需要其他ID
因此,我怎样做呢 我将使用这种方法:
model1.child_items.where('child_items.id IN (?)', [1, 2, 3])
model1_instance.child_items.where(child_items: { id: [1, 2, 3] })
Rails允许您将表名作为散列键传递,然后添加任何要查询的参数 不是关联,而是表名。另外,您可能错过了对
child\u items
的调用,模型实例没有where
。我假设model1是模型的一个实例,因为它是小写的,而不是模型本身。但是缺少对子项的调用是有效的,这没有返回预期的模型类型。糟糕的是,我已经更新了我的答案。关于散列键是(或者更确切地说不是)关联,仍然有一个令人困惑的部分。我已经更新了我的答案,使其在表名而不是关联上更加明确,并且更清楚地表明它是在实例上而不是在模型本身上被调用的。感谢您的反馈。再一次,这种语法与关联完全无关,它只是一个简单的表名,没有模型的推断。附言:否决票不是我的。嘿,Mongoid还是ActiveRecord?