所以我有一个名为item的模型,其中有一个名为price的列。我假设列将作为实例变量存储在模型中,但方法
def price
@price
end
什么都不返回。所以我的问题是如何从模型内部获取价格?
额外信息 我这样做的原因是物品有时会有特价,所以我想要一个方法价格来检查特价并在特价活动时更改价格,如果不是,则单独留下,如
def price
check_for_special
@price
end
答案 0 :(得分:1)
ActiveRecord自动生成与数据库字段关联的setter和getter方法。 price
将是同名字段的getter方法。
通过添加price
方法,您已覆盖ActiveRecord创建的方法。在覆盖现有方法时,可以通过调用super
来访问原始方法。所以你可以这样:
def price
check_for_special
super
end
但是,我不建议这样做,因为你通常需要一种只获取价格值的方法,而不是总是调用另一种方法。所以
def price_with_check
check_for_special
price
end