簡體   English   中英

在Rails中將初始化方法覆蓋到模型中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM