【发布时间】:2013-08-02 15:11:08
【问题描述】:
我正在尝试覆盖初始化方法。见下文
class Restriction < ActiveRecord::Base
RESTRICTION_TYPES = {
less_than: "IND<X",
greater_than: "X<IND",
between: "X<IND<Y"
}
def initialize restriction_type_name
super
formula = RESTRICTION_TYPES[restriction_type_name]
end
private
def formula=f
self[:formula] = f
end
end
当我运行r = Restriction.new(:between) 时出现异常:
NoMethodError: undefined method `stringify_keys' for :between:Symbol
我做错了什么?
顺便说一句,我这样做是因为 formula 属性无法从外部访问。
【问题讨论】:
-
真的不是个好主意。 ActiveRecord 在初始化方法的背后做了很多魔术。
-
我读到过。那么我的问题的最佳解决方案是什么?
标签: ruby-on-rails activerecord ruby-on-rails-4 object-initializers