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

Ruby on rails 如何从rails模型显示此实例方法?,ruby-on-rails,ruby,rails-activerecord,rails-models,Ruby On Rails,Ruby,Rails Activerecord,Rails Models,我有两种rails型号,用法和价格。到目前为止,它们看起来是这样的: class Usage < ActiveRecord::Base has_one :price def spend usage.amount * price.amount end end 我哪里出错了???您需要通过使用模型创建价格,以使关联正常工作 usage = Usage.create(amount:100) usage.create_price(amount:0.1)

我有两种rails型号,用法和价格。到目前为止,它们看起来是这样的:

class Usage < ActiveRecord::Base
    has_one :price

    def spend
        usage.amount * price.amount
    end
end

我哪里出错了???

您需要通过使用模型创建价格,以使关联正常工作

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

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

u = Usage.create(amount:100)
u.create_price(amount:0.1)
此外,在模型本身中,当在模型的实例方法中引用父类时,该类应称为self:

def spend
  self.amount * price.amount
end

这最后一点是我错的地方,我们可以很容易地用“u.spend”来称呼“spend”

由于价格属于用法,您应该首先创建用法对象,然后使用该对象可以创建价格对象

用法=用法。创建(金额: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”是使用对象。

干杯,谢谢!如果我按照我的方式创建价格,这是否意味着我创建的价格没有与之关联的用途?正确。除非您在创建它时指定用法\u id。ie:Price.create(用法标识:1,金额:0.1)啊。这就更清楚了。我可以看到它将如何工作,但不幸的是,我仍然得到一个错误。当我完全按照上面的方式键入时,会出现以下错误:NoMethodError:nil:NilClass的未定义方法“create”“。这在我运行usage.price.create之后出现,第一个运行良好并添加到数据库中。你能在这里通过代码周围行的要点和链接吗?”?当然,谢谢你的关注,我是一个完全的初学者,已经在这方面做了好几个小时了。
def spend
  self.amount * price.amount
end
class Usage < ActiveRecord::Base

  has_one :price

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

end