2013-04-18 3 views
1

Возможно ли в Rails создать «пустой» объект запроса ActiveRecord для данной модели? Пусто значит для меня условие, которое включает все возможные строки в db. Я хочу применить фильтры к этому запросу позже.Rails 3: создать «пустой» объект запроса ActiveRecord

На данный момент я использую Booking.where('id > ?', 0), но я считаю, что должен быть более приятный способ, как Booking.all() - но all() возвращает массив, а не ActiveRecord. Вот мой код:

@bookings = Booking.where('id > ?', 0) 
if [email protected]? 
    @bookings = @bookings.where('day = ?',@day) 
end 
if @project_id && [email protected]_id.empty? 
    @bookings = @bookings.where('project_id = ?', @project_id) 
end 

Благодарим за помощь!

+3

Booking.scoped должен работать на вас. –

+0

Спасибо - это то, что я искал – tomraithel

ответ

0

Использование unscoped для создания пустого запроса, так что вы можете построить на нем. (scoped есть deprecated).

@bookings = Booking.unscoped 
if [email protected]? 
    @bookings = @bookings.where('day = ?',@day) 
end 
if @project_id && [email protected]_id.empty? 
    @bookings = @bookings.where('project_id = ?', @project_id) 
end 

(BTW в отсутствии этого вы можете также инициализируете его с Booking.where(true) вместо id > 0 проверки, это очиститель и, вероятно, чтобы выполнить лучше, чем делать проверку в реальном состоянии, но, незаданное это еще лучше.).

Смежные вопросы