如何从rails模型中显示此实例方法?

时间:2013-02-07 15:26:01

标签: ruby-on-rails ruby rails-activerecord rails-models

我有两种导轨型号,用途&价钱。到目前为止他们看起来像这样:

class Usage < ActiveRecord::Base
    has_one :price

    def spend
        usage.amount * price.amount
    end
end

class Price < ActiveRecord::Base
    belongs_to :usage
end

我试图通过在控制台中执行此操作来调用“花费”:

Usage.create(amount:100)
Price.create(amount:0.1)

usage=Usage.find(1)
puts usage.price

我哪里错了?

3 个答案:

答案 0 :(得分:2)

您需要通过使用模型创建价格以使关联有效。

usage = Usage.create(amount:100)
usage.create_price(amount:0.1)

答案 1 :(得分:1)

由于价格属于使用,您应首先创建使用对象,然后使用它来创建价格对象。

用法= Usage.create(金额:100)

price = usage.price.create(金额:0.1)

然后您将获得与使用模式相关的价格。

然后在使用模型中你可以写,

class Usage < ActiveRecord::Base

  has_one :price

  def spend
    self.amount * (self.price.amount)
  end

end

您可以像上面一样调用关联self.price.amount,其中“self”是Usage对象。

答案 2 :(得分:0)

问题在于我正在做的两件事。感谢blamattina指出这是在模型中定义后创建新关联对象的方法:

u = Usage.create(amount:100)
u.create_price(amount:0.1)

此外,在模型本身中,当引用模型的实例方法中的父类时,该类应该被称为self:

def spend
  self.amount * price.amount
end

最后一点是我出错的地方,用u.spend可以轻松调用支出!