12
我有在多個ActiveRecord模型中重複使用的named_scope。 例如:如何從ActiveRecord模型中提取常用named_scopes
named_scope :limit, lambda {|limit| {:limit => limit}}
什麼是提取該碼被跨模型共享的最佳實踐。 是否有可能將其提取到模塊,或者我應該重新打開ActiveRecord :: Base類?
我有在多個ActiveRecord模型中重複使用的named_scope。 例如:如何從ActiveRecord模型中提取常用named_scopes
named_scope :limit, lambda {|limit| {:limit => limit}}
什麼是提取該碼被跨模型共享的最佳實踐。 是否有可能將其提取到模塊,或者我應該重新打開ActiveRecord :: Base類?
使用模塊。像這樣的東西應該工作:
module CommonScopes
def self.included(base)
base.class_eval do
named_scope :limit, lambda {|limit| {:limit => limit}}
end
end
end
然後就包括CommonScopes,你會好到哪裏去。
@馬特通過instance_eval,@see Shared scopes via module?
這似乎爲類級別的工作,而不是實例級。例如:`User.limit(1)`工作,但第二次調用限制在這裏引發一個錯誤:`users = User.limit(5); users.limit(1)`。任何解決方案的實例級別? – 2011-04-18 17:14:11