2

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')] } }
4

1 回答 1

2

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

在上述情况下,您可以说

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

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

于 2010-08-21T06:43:49.513 回答