如何从模型轨道内访问属性

时间:2016-12-24 16:37:38

标签: ruby-on-rails ruby models

所以我有一个名为item的模型,其中有一个名为price的列。我假设列将作为实例变量存储在模型中,但方法

 def price
   @price
 end

什么都不返回。所以我的问题是如何从模型内部获取价格?

额外信息 我这样做的原因是物品有时会有特价,所以我想要一个方法价格来检查特价并在特价活动时更改价格,如果不是,则单独留下,如

 def price
   check_for_special
   @price
 end

1 个答案:

答案 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