Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 具有两个关联模型的ActiveRecord查询_Ruby On Rails_Ruby_Rails Activerecord - Fatal编程技术网

Ruby on rails 具有两个关联模型的ActiveRecord查询

Ruby on rails 具有两个关联模型的ActiveRecord查询,ruby-on-rails,ruby,rails-activerecord,Ruby On Rails,Ruby,Rails Activerecord,我有两种模式,交易模式和用户模式。一个用户有许多交易,而一笔交易属于创建该交易的用户。用户具有属性roles,其中user.roles是一个数组 我想找到所有由角色包括开发者的用户创建的交易。我习惯于为数据库查询编写SQL,所以我在这里遇到了麻烦。我认为自己是一个SQL穴居人,但你可以做一些事情,比如:Deal.includes:users.where:users=>{:role=>'developer'}或者不管你的用户角色如何被查询 我认为自己是一个sql穴居人,但您可以执行以下操作:Dea

我有两种模式,交易模式和用户模式。一个用户有许多交易,而一笔交易属于创建该交易的用户。用户具有属性roles,其中user.roles是一个数组


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

我认为自己是一个SQL穴居人,但你可以做一些事情,比如:Deal.includes:users.where:users=>{:role=>'developer'}或者不管你的用户角色如何被查询

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

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

参考资料:

有几个选项:

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

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

有几个选项:

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


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

Hm,在rails控制台中尝试此操作时,我似乎遇到了此错误:ActiveRecord::StatementInvalid:Mysql2::error:Unknown列“user.roles”在“w here子句”中:选择deals.*从deals内部加入users.id=deals.user\u id WHERE user.roles在“developer”中,在rails控制台中尝试此操作时,我似乎遇到了此错误:ActiveRecord::StatementInvalid:Mysql2::error:Unknown列“user.roles”在“w here子句”中:选择deals.*从deals内部加入users.id=deals.user\u id WHERE user.roles在“developer”中