Пытаетесь создать запрос области модели рельсов для записей с даты x, использовать лямбду? - PullRequest
2 голосов
/ 15 ноября 2011

Я думаю, что я хочу использовать комбинирование искателя уровня модели с лямбдой.

named_scope :recent_snaps, lambda {|since_when| {:conditions=>{:created_at >= since_when}}}

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

Я не хочу использовать find_by_sql или поиск контроллера, мне нужен мой искатель на уровне модели для тестирования rspec.

Ответы [ 3 ]

6 голосов
/ 15 ноября 2011

Если вы на Rails 3 (как вы, вероятно, и предполагаете, учитывая теги вопроса), вы должны использовать scope вместо named_scope и where вместо conditions.Кроме того, вы не можете использовать >= в хэше.

Ваша готовая область должна выглядеть примерно так:

scope :recent_snaps, lambda { |since_when| where("created_at >= ?", since_when) }
2 голосов
/ 15 ноября 2011

В дополнение к ответу Алекса: для внешнего вида запроса, который вы пытаетесь, я думаю, вам понравится squeel :

scope :recent_snaps, lambda { |since_when| where{created_at >= since_when} }
1 голос
/ 22 декабря 2011

Просто другие способы добиться того же (хотя бы в рельсах 3.1)

в простых рельсах

scope :recent_snaps, ->(since_when) { where("created_at >= ?", since_when) }

рельсы + squeel

scope :recent_snaps, ->(since_when) { where{created_at >= since_when} }

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