假设我有模型:用户和项目以及它们之间的多对多关系。如何获得具有已定义属性的确切(不再)项目的用户,即具有颜色 = ['red', 'black'] 的项目的用户。
当然我可以这样做:
User.all :joins => [:items, :items], :conditions => {:"items.color" => "red", :"items_users.color" => 'black'}
但是对于更多的属性,这将是相当麻烦的。我也可以这样做:
User.all(:conditions => ["items.color in (?), ['red', 'black']], :include => :items)
但是这个也返回了带有颜色的用户= ['red', 'black', 'blue', 'etc']
所以唯一的解决方案是获取所有内容并使用 ruby 语法进行排序?如何在一个 SQL 查询或 Rails AR 语法中做到这一点?