Ответ 1
Rails3:
@nonorders = Customers.where("customers.date IS NOT NULL")
Rails2:
@nonorders = Customers.find(:all, :conditions => "customers.date IS NOT NULL")
Я пытаюсь определить две переменные следующим образом:
@orders = Customer.find_all_by_order_date(nil)
@nonorders = Customer.find_all_by_order_date(!nil)
Первый работает правильно, а второй нет. Как я могу найти тех клиентов, чьи поля order_date не равны нулю?
@nonorders = @customer.orders.find(:all, :conditions => "@customer.orders.order_date IS NOT NULL")
дает мне следующую ошибку:
undefined method 'extract_options_from_args!' for ActiveRecord::Base:Class
Я пытался изменить условия, такие как @orders.order_date
, @customer.order.order_date
и т.д. Что вызвало эту ошибку? Спасибо!
Rails3:
@nonorders = Customers.where("customers.date IS NOT NULL")
Rails2:
@nonorders = Customers.find(:all, :conditions => "customers.date IS NOT NULL")
Строка, которую вы передаете как: условия должны быть фрагментом sql.
В приведенном ниже примере "clients.date" относится к полю даты таблицы клиентов. Я думаю, что бит "клиентов" не является абсолютно необходимым, так как имя таблицы ясно из контекста.
В вашем примере должно работать следующее:
@nonorders = @customer.orders.find(:all, :conditions => "order_date IS NOT NULL")
> Rails 3.x
@nonorders = Customers.where("date IS NOT NULL")
Unless you are doing some non rails conventional stuff, there should be no need to specify the table name within the SQL payload of the the where method