我在rails 2.3中使用带default_scope
的lambda时遇到了lil问题。
default_scope lambda { {:account_id => account_id } }
我使用了上面的代码,但显示的错误消息为ArgumentError: wrong number of arguments (1 for 0)
我使用lambda
worng方式吗?
由于
答案 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 })
希望这可以帮助你,让我知道是否有任何令人困惑的事情。