Ruby on Rails 3 практических руководства делает 'ИЛИ' условие

Мне нужен 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}'

Однако они снова повреждаются при использовании в комбинациях. СУЩЕСТВУЕТ ЛИ лучший способ указать это?

50
задан highBandWidth 14 November 2012 в 00:22
поделиться

2 ответа

К сожалению, .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
9
ответ дан 7 November 2019 в 10:26
поделиться

Я бы использовал предложение IN , например:

Account.where(["id in (?)", [1, 2]])
6
ответ дан 7 November 2019 в 10:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: