RoR: named_scope, все записи созданы за последние 7 дней? - PullRequest
4 голосов
/ 25 ноября 2008

как мне определить named_scope для возврата всех записей, которые были созданы за последние 7 дней, а затем как мне использовать эту именованную область в контроллере?

Ответы [ 2 ]

6 голосов
/ 25 ноября 2008

Я бы порекомендовал посмотреть Эпизод Railscast на named_scope .

В идеале, код, который вы ищете, будет:

 named_scope :recent, 
   lambda { |*args| {:conditions => ["created_at > ?", (args.first || 7.days.ago)]} }

Это позволит вам передать параметр в именованную область или по умолчанию использовать предыдущие 7 дней.

Вы бы назвали это, используя:

MyModel.recent
0 голосов
/ 25 ноября 2008

Вам нужно передать named_scope процесс, чтобы он оценивался каждый раз, когда выполняется вызов named_scope. В противном случае, если вы укажете Time.now, он будет запущен один раз (при первом вызове) и будет «кэшироваться» до перезапуска приложения.

  named_scope \
    :this_week,
    :conditions =>  [
      %created_at > :time!,
      proc {{:time => Time.now}}
    ]

Вы можете назвать named_scope как @ Ar_object.this_week

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...