2015-08-18 2 views
0

Я хочу, чтобы иметь возможность строить запрос в разделах без оценки окончательного утверждения до более позднего времени в Ruby on Rails.Есть ли способ отложить запрос ActiveRecord (например, QuerySet в Django)?

В частности, это поведение (копируется из Djano документов):

QuerySet может быть построен, фильтрует, нарезанный и вообще ходили фактически не попав в базе данных. Нет Активность базы данных на самом деле происходит, пока вы не сделаете что-то, чтобы оценить запрос.

ответ

2

Как это работает по умолчанию, если вы не получили доступ к результатам. То есть, вы можете поместить это в ваш контроллер:

@widgets = Widget.enabled 
@widgets = @widgets.where(foo: 'bar') 
# ... more conditions here if you want ... 

И тогда, на ваш взгляд поставить это:

<%- @widgets.each do |w| %> 
    ... 
<% end %> 

Запрос DB не будет работать до того @widgets.each линии.

Вы можете проверить это, используя операторы logger.info в своем элементе управления, чтобы увидеть, где выполняется запрос.

+0

Вы правы. Я никогда не понимал этого, потому что консоль не работает таким образом. – Bowen

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