我有两种导轨型号,用途&价钱。到目前为止他们看起来像这样:
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
我哪里错了?
答案 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可以轻松调用支出!