On Rails 3.2.1。我有一个名为Car
的模型,其名称为rate
(表示价格数量)。我正在使用ajaxful_rating
gem,它将一个名为rate
的方法(提交一名教师有多好的评级)与Car
相关联。
所以在我看来,当我试图用以下方式显示价格数量时:
<%= @car.rate %>
我收到语法错误,因为有命名混淆。如何让Rails知道我想调用rate
属性而不是rate
方法?有没有一种简单的方法来解决这个问题,而无需回滚我的数据库并重命名属性?
答案 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就可以执行此操作。