[英]Overriding initialize method into model in Rails
我正在嘗試覆蓋initialize方法。 見下文
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
我究竟做錯了什么?
BTW我這樣做是由於formula
屬性不能從外部加入。
您不能覆蓋initialize
,無論如何您都無法工作(它將嘗試在initialize方法中設置一個稱為formula
的局部變量)。 但是,您可以將條件移至您的formula=
setter中,其內容如下:
def formula=(restriction_type_name)
self[:formula] = RESTRICTION_TYPES[restriction_type_name]
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.