使用具有默认范围的lambda

时间:2011-11-25 05:48:34

标签: ruby-on-rails activerecord ruby-on-rails-2

我在rails 2.3中使用带default_scope的lambda时遇到了lil问题。

default_scope lambda { {:account_id => account_id } }

我使用了上面的代码,但显示的错误消息为ArgumentError: wrong number of arguments (1 for 0)

我使用lambda worng方式吗?

由于

1 个答案:

答案 0 :(得分:2)

好吧,你想要的是使用命名范围,这样你将来可以拥有其他范围。通常,您希望远离更改默认范围,因为它会影响其他查询。

下面的代码创建了一个名为current_account的命名范围,它确保所有记录都符合条件,记录的account_id必须与当前的account_id匹配。

named_scope :current_account, :conditions => { :account_id => account_id }

然后,当您想使用named_scope时,您可以调用以下代码:

User.current_account.all

这就像打电话:

User.all(:conditions => { :account_id => account_id })

希望这可以帮助你,让我知道是否有任何令人困惑的事情。