Ruby on rails Rails-条件包括数组中的多个项

Ruby on rails Rails-条件包括数组中的多个项,ruby-on-rails,join,conditional-statements,Ruby On Rails,Join,Conditional Statements,我想知道如何确保此查询仅在“items.id”“3”和“4”同时存在而不是“3”或/和“4”时有效 谢谢您需要手动构造到bags\u persons表的两个内部联接: p = Person.find_by_id(1, :include => :bags, :conditions => ['bag.id in (?), [3,4]) 希望这对您有所帮助请详细解释一下您试图实现的目标。在简单的SGL中:选择*FROM persons p internal JOIN bags\u per

我想知道如何确保此查询仅在“items.id”“3”和“4”同时存在而不是“3”或/和“4”时有效


谢谢

您需要手动构造到bags\u persons表的两个内部联接:

p = Person.find_by_id(1, :include => :bags, :conditions => ['bag.id in (?), [3,4])

希望这对您有所帮助

请详细解释一下您试图实现的目标。在简单的SGL中:选择*FROM persons p internal JOIN bags\u persons b1 ON b1.persons\u id=p.id internal JOIN bags\u persons b2 ON b2.persons\u id=p.id其中b1.bag\u id=3和b2.bag\u id=4,关键是您需要加入两次才能同时搜索两个包。也许有一种更简洁的方法可以在rails中编写它,但是使用:joins和:conditions,您可以将此查询转换为find语法。顺便说一句,:include主要用于预取生成的person对象中的包,因此如果您在请求后不访问包:joins就足够了。设置是什么?person有多个:bags and bag Owns to person?@jacob我正在尝试运行一个查询,只有当他们有相关的bags时才会返回person@标记设置为“个人拥有多人:包,拥有多人:包,:通过=>:peoples\u包”,“peoples\u包属于:个人,属于:包”和“bags拥有多人:包”
Person.find_by_id(1, :joins => "INNER JOIN bags_persons bp1 ON bp1.person_id=persons.id INNER JOIN bags_persons bp2 ON bp2.person_id=persons.id", :conditions => "bp1.bag_id=3 AND bp2.bag_id=4")