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')] } }
答案 0 :(得分:2)
使用lambda,您可以指定范围的参数。
在上述情况下,您可以说
Model.with_avatar 和 Model.date_from(“10.08.2010”),但是你不能说例如 Model.with_avatar(false)
在这种情况下,你需要对lambda的参数有些小心:除非你将参数传递给date_from,否则它可能不起作用。一个“解决方法”是使用| * date | ,检查是否已传入,如果不是,则将其设置为某个默认值。