1

我有两个模型,DealUser。一个用户has_many交易,一个交易belongs_to一个用户(创建交易的用户)。用户有属性roles,其中user.roles是一个数组。

我想查找由角色包括的用户创建的所有交易"developer"。我习惯为数据库查询编写 SQL,所以我在这里遇到了麻烦。

4

3 回答 3

3
@deals = Deal.joins(:users).where(:users => { :roles => ['developer'] })

参考:http ://api.rubyonrails.org/classes/ActiveRecord/Base.html

于 2013-04-11T02:47:14.763 回答
1

几个选项:

@deals = Deal.select{|d| d.user.roles.include?("developer")}

或者

@deals = User.select{|u| u.roles.include?("developer")}.map(&:deals).flatten

我更喜欢第一个,但第二个可能会更快,具体取决于您拥有多少交易和用户。

于 2013-04-11T14:32:19.837 回答
1

我认为自己是一个 sql 穴居人,但您可以执行以下操作:Deal.includes(:users).where(:users => {:role => 'developer'}) 或者查询您的用户角色。

于 2013-04-11T02:44:40.980 回答