下面的例子:如何从命名范围扩展中访问named_scope参数?
named_scope :search, lambda {|my_args| {...}} do
def access_my_args
p "#{my_args}"
end
end
# Call:
Model.search(args).access_my_args
正如你可以看到我想从拉姆达访问的named_scope扩展的参数。有没有办法做到这一点?
更具体的例子:
class User < ActiveRecord::Base
named_scope :by_name, lambda {|name_from_scope| {:conditions => {:name => name_from_scope}}} do
def change_name
each { |i| i.update_attribute(:name, "#{name_from_scope}xyz") }
end
end
end
(我知道有一个find_by_name范围等等...)。我想使用name_from_scope参数,它是在作用域扩展中的作用域中传递的。
您发布的代码有两个块,并且不会按预期工作。 如果需要将参数作为参数,您将不能访问参数吗? 你能更具体地说明你正在努力完成什么吗?它的工作原理是 – nessence 2009-05-19 11:03:44
。请参阅:http://ryandaigle.com/articles/2008/3/24/what-s-new-in-edge-rails-has-finder-functionality - >命名范围扩展 – spas 2009-05-19 13:28:00