2012-03-12 18 views
0

On Rails 3.2.1。私はrate(価格の数量を示す)という属性を持つCarというモデルを持っています。私はrateというメソッドを関連付けて、Carを使ってajaxful_ratingの宝石を使用しています(教師の良さの評価を提出するため)。私の見解ではそうレールモデル属性と宝石名の競合を解決するにはどうすればいいですか?

、私は価格の数量を表示しようとしている:

<%= @car.rate %> 

命名混乱がありますので、私は構文エラーを取得します。 rate属性ではなくrate属性を呼び出すことをRailsに知らせるにはどうすればよいですか?私のDBをロールバックして属性の名前を変更せずにこれを解決する簡単な方法はありますか?

答えて

1

あなたはread_attributeを使用することができます。

@car.read_attribute(:rate) 

しかし、私はあなたの問題を引き起こし、道のりを混乱させるだけで、それらの名前の1つを改名して競合を解決することをお勧めします。

列の名前を変更するためにデータベースをロールバックする必要はありません。その場合は、create a new migrationにする必要があります。

+0

ありがとう、私はまだかなり新しいことですので、あなたは混乱の部分について正しいと思います...興味深いことに、私はread_attribute()について知りませんでした。 –

1

まず、属性の名前を変更するためにデータベースをロールバックする必要はありません。この1つの変更で新しい移行を作成するだけです:How can I rename a database column in a Ruby on Rails migration?これらの変更は時々必要になるため、Railsにはこの処理の仕組みがあります。

しかし、あなたの質問に答えるために、別の回避策は、実際にこのような属性へのアクセスを提供し、車に新しいメソッドを書くことになります:

 
def rate_price 
    read_attribute(:rate) 
end 
+0

提案と移行の記事のリンクをありがとう!かなり新しいレールであることから、道を混乱させるというポスターのポイントがありますが、それは私のrspecテストに少し影響を与えます。 –

+0

あなたの構文が間違っています。 'read_attribute'は、配列ではなく引数を持つメソッドです。 –

関連する問題