In SQL it should look like this:
SELECT * FROM `categories_description_old` WHERE ((`categories_description` = '') OR (`categories_name` = '') OR (`categories_heading_title` = ''))
My (ugly) solution:
conditions = [:categories_name, :categories_heading_title, :categories_description]
b = table_categories_des开发者_高级运维cription_old.filter(conditions.pop => "")
conditions.each do |m|
b = b.or(m => "")
end
Is there a better solution to chain the or conditions?
DB[:categories_description_old].
filter({:categories_description=>'',
:categories_name=>'',
:categories_heading_title=>''}.sql_or)
You can do something like:
conditions.inject(table_categories_description_old.filter(true)){|acc, cond|
acc.or(cond => '')
}
But in cases like this when you have already thought out SQL query, I find it easier to just type whole WHERE condition and use Sequel just to sanitize my query parameters.
精彩评论