named_scope和named_scope + lambda之间有什么区别

时间:2010-08-21 06:29:31

标签: ruby-on-rails named-scope

named_scope和named_scope + lambda 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 个答案:

答案 0 :(得分:2)

使用lambda,您可以指定范围的参数。

在上述情况下,您可以说

Model.with_avatar Model.date_from(“10.08.2010”),但是你不能说例如 Model.with_avatar(false)

在这种情况下,你需要对lambda的参数有些小心:除非你将参数传递给date_from,否则它可能不起作用。一个“解决方法”是使用| * date | ,检查是否已传入,如果不是,则将其设置为某个默认值。