В чем разница между named_scope и named_scope + лямбда - PullRequest
2 голосов
/ 21 августа 2010

В чем разница между named_scope и named_scope + лямбда-операторами кода Ruby on Rails?

named_scope :with_avatar, :conditions => ['avatar IS NOT NULL']

и

named_scope :date_from, lambda { |date| { :conditions => ['created_at >= ?', DateTime.strptime(date, '%d.%m.%Y')] } }

1 Ответ

2 голосов
/ 21 августа 2010

С помощью лямбды вы можете указать аргументы для области.

В приведенном выше случае вы могли бы сказать

Model.with_avatar и Model.date_from ("10.08.2010") , однако вы не можете сказать, например, Model.with_avatar (false)

В этом случае вам нужно быть осторожнее с аргументами лямбды: если вы не передадите аргумент в date_from, он, вероятно, не будет работать. Один «обходной путь» заключается в использовании | * date | проверьте, было ли оно передано, и установите для него значение по умолчанию, если это не так.

...