Мне нужен SQL-оператор, которые проверяют, удовлетворено ли одно условие:
SELECT * FROM my_table WHERE my_table.x=1 OR my_table.y=1
Я хочу сделать это 'направляющие 3' пути. Я искал что-то как:
Account.where(:id => 1).or.where(:id => 2)
Я знаю, что всегда могу нейтрализация к sql или строке условий. Однако, по моему опыту, это часто приводит к хаосу при объединении объемов. Что лучший способ состоит в том, чтобы сделать это?
Другой связанный вопрос, то, как может описать отношения, которые зависят от ИЛИ условие. Единственным путем я нашел:
has_many :my_thing, :class_name => "MyTable", :finder_sql => 'SELECT my_tables.* ' + 'FROM my_tables ' +
'WHERE my_tables.payer_id = #{id} OR my_tables.payee_id = #{id}'
Однако они снова повреждаются при использовании в комбинациях. СУЩЕСТВУЕТ ЛИ лучший способ указать это?
К сожалению, .or еще не реализован (но когда он будет реализован, это будет просто УДИВИТЕЛЬНО).
Так что вам придется сделать что-то вроде:
class Project < ActiveRecord::Base
scope :sufficient_data, :conditions=>['ratio_story_completion != 0 OR ratio_differential != 0']
scope :profitable, :conditions=>['profit > 0']
Таким образом, вы все равно сможете быть крутым и сделать:
Project.sufficient_data.profitable
Я бы использовал предложение IN
, например:
Account.where(["id in (?)", [1, 2]])