Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 一个带“的模型;有“你”和“你属于”很多“吗如何通过id列表进行查询?_Ruby On Rails_Ruby_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 一个带“的模型;有“你”和“你属于”很多“吗如何通过id列表进行查询?

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 因此,我怎样做呢 我

我有一个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


因此,我怎样做呢

我将使用这种方法:

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?