-1

我创建了一个如下所示的模型:

class Stock < ActiveRecord::Base
  attr_accessible :company, :stock_ticker, :current_stock_price, :free_cash_flow, :num_shares, :PE_ratio, :dividend_per_share, :dividend_growth_rate, :beta, :cost_of_equity, :rate_of_return, :fcf_share_value, :capm_share_value, :dividend_share_value, :composite_share_value  

  def initialize(submitted_stock)
    @company = submitted_stock
    @stock_ticker = submitted_stock
    @current_stock_price = 0 
    @free_cash_flow = 0
    @num_shares = 0 
    @PE_ratio = 0
    @dividend_per_share = 0
    @dividend_growth_rate = 0
    @beta = 0
    @cost_of_equity = 0
    @rate_of_return = 0
    @fcf_share_value = 0
    @capm_share_value = 0
    @dividend_share_value = 0
    @composite_share_value = 0
  end
end

当我尝试创建一个新的Stock

s = Stock.new("MSFT")

没有创建新库存,而是得到以下响应:

#<Stock not initialized>

我使用 Pry 并看到它正在将值分配给实例变量,但它没有初始化对象或创建它。

4

2 回答 2

3

您正在覆盖ActiveRecordsinitialize方法。这可能会导致问题 - 特别是如果您更改界面(如您所愿)。

更好的方法可能是使用after_initialize回调设置默认值。

或者,如果您坚持定义自己的,请initialize确保您调用ActiveRecords 同上 using super

于 2013-08-25T20:40:14.453 回答
2

通常不应覆盖initializeActive Record 对象。此外,活动记录属性不存储在单个实例变量中,因此将所有这些实例变量设置为零不会实现任何效果

于 2013-08-25T20:39:23.870 回答