ips*_*sum 9 ruby chaining sequel
在SQL中它应该如下所示:
SELECT * FROM `categories_description_old` WHERE ((`categories_description` = '') OR (`categories_name` = '') OR (`categories_heading_title` = ''))
Run Code Online (Sandbox Code Playgroud)
我(丑陋)的解决方案:
conditions = [:categories_name, :categories_heading_title, :categories_description]
b = table_categories_description_old.filter(conditions.pop => "")
conditions.each do |m|
b = b.or(m => "")
end
Run Code Online (Sandbox Code Playgroud)
是否有更好的解决方案来链接或条件?
Jer*_*ans 16
DB[:categories_description_old].
filter({:categories_description=>'',
:categories_name=>'',
:categories_heading_title=>''}.sql_or)
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
conditions.inject(table_categories_description_old.filter(true)){|acc, cond|
acc.or(cond => '')
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,当您已经考虑好 SQL 查询时,我发现只需键入整个 WHERE 条件并使用 Sequel 来清理查询参数会更容易。
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |