如何解决rails模型属性和gem名称冲突?

时间:2012-03-12 21:18:46

标签: ruby-on-rails ruby ruby-on-rails-3.2

On Rails 3.2.1。我有一个名为Car的模型,其名称为rate(表示价格数量)。我正在使用ajaxful_rating gem,它将一个名为rate的方法(提交一名教师有多好的评级)与Car相关联。

所以在我看来,当我试图用以下方式显示价格数量时:

<%= @car.rate %>

我收到语法错误,因为有命名混淆。如何让Rails知道我想调用rate属性而不是rate方法?有没有一种简单的方法来解决这个问题,而无需回滚我的数据库并重命名属性?

2 个答案:

答案 0 :(得分:1)

首先,您不必回滚数据库来重命名该属性。您只需使用以下更改创建一个新的迁移:How can I rename a database column in a Ruby on Rails migration?这些更改是不时需要的,因此Rails有这种机制来处理它们。

但是要回答你的问题,另一种解决方法是在汽车上编写一个新方法,实际上可以像这样访问属性:

def rate_price
  read_attribute(:rate)
end

答案 1 :(得分:1)

您可以使用read_attribute

@car.read_attribute(:rate)

但是我建议您通过重命名其中一个来解决冲突,因为它会导致您遇到问题和混乱。

您无需回滚数据库以重命名列,只需create a new migration就可以执行此操作。