【发布时间】:2014-02-27 18:53:15
【问题描述】:
所以我有一个 gem,其中包含一些活动记录模型,这些模型被我们平台上的多个应用程序使用。我们有一个常量来定义一个“类型”列表,这些“类型”在几个不同的应用程序上是不同的。
# in the gem
class MyModel < ActiveRecord::Base
TYPES = ["A Type", "Another Type"]
end
在应用程序代码中重新定义此常量将为已初始化的常量生成警告。因此,由于它不是真正恒定的,因此我决定将其重构为类方法。
# gem
class MyModel < ActiveRecord::Base
def self.types
[]
end
end
# application a
class MyModel < ActiveRecord::Base
def self.types
["A Type", "D Type"]
end
end
# application b
class MyModel < ActiveRecord::Base
def self.types
["B Type", "C Type"]
end
end
但是,在 App A 或 B 中访问 MyModel.types 时,types 是 []。这个问题以及其他一些问题让我得出结论,gem 是在加载 rails 应用程序之后加载的,而我的假设恰恰相反。
处理此类不同情况的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby activerecord gem