gpt4 book ai didi

ruby-on-rails - 如何对所有 ActiveRecord 模型使用通用的 named_scope

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:29 25 4
gpt4 key购买 nike

你好,如何构建对所有模型通用的命名范围。

最佳答案

我通过将这段代码放在 lib/has_common_named_scopes.rb 中来做到这一点:

module HasCommonNamedScopes
def self.included(base)
base.class_eval {
# Named scopes
named_scope :newest, :order => "#{base.table_name}.created_at DESC"
named_scope :freshest, :order => "#{base.table_name}.updated_at DESC"
named_scope :limit, lambda { |limit| {:limit => limit} }
}
end
end

然后将模块包含在我需要的每个模型中:

class MyModel < ActiveRecord::Base
include HasCommonNamedScopes

我建议您在引用这些命名范围中的列时使用 base.table_name 来限定表,就像我在示例中所做的那样。否则,当您将这些命名作用域与加入其他表的其他作用域组合时,您会遇到引用不明确的问题。

更新:

scope 在 Rails > 3 中使用,named_scope 在之前的版本中使用。

关于ruby-on-rails - 如何对所有 ActiveRecord 模型使用通用的 named_scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1687236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com