use*_*287 5 ruby ruby-on-rails-4 rails-activerecord activerecord-relation
我想结合多个活动记录关系
例如,
apple_companies = Company.where("name like ?","%apple%")
banana_companies = Company.where("name like ?","%banana%")
Run Code Online (Sandbox Code Playgroud)
我想结合这两种关系.
不合并,合并是apple_companies.merge(banana_companies)=> Company.where("名称像?和名字一样?","%apple%","%banana%")
我想要Company.where("名字喜欢?或名字喜欢?","%apple%","%banana%")
之后,
我会编码
companies = Company.none
company_name_list.each do |name|
like = "%"+name+"%"
companies += Company.where("name like ?",like)
end
Run Code Online (Sandbox Code Playgroud)
但是我写的代码使公司成为阵列......
所以我不能订购和页面公司...... :(
谢谢
apple_companies = Company.where("name like ?","%apple%")
banana_companies = Company.where("name like ?","%banana%")
apples = apple_companies.where_values.reduce(:and)
bananas = banana_companies.where_values.reduce(:and)
Company.where(apples.or(bananas))
Run Code Online (Sandbox Code Playgroud)
有关更多示例,请参见ActiveRecord Arel OR条件。
小智 5
我遇到的最好结果是获取并合并两个查询的 id,然后像这样搜索它们:
apple_companies = Company.where("name like ?","%apple%").pluck(:id)
banana_companies = Company.where("name like ?","%banana%").pluck(:id)
ids = apple_companies + banana_companies.uniq
Company.where(id: ids)
Run Code Online (Sandbox Code Playgroud)
这是四行,看起来应该可以在一行中完成,但它确实有效。
Bab*_*bar -1
使用
Company.where(name: IN ('%apple%','%banana%'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8084 次 |
| 最近记录: |