更新された回答
多くのデータ列を格納していますが、各列は1つのタイプにすぎず、関心は厳密に表現されているため、必要なことを実現するためにデコレータを使用します。Draperを使用してこれを行うための優れた方法の例については、このrailscastを参照してください。
基本的に、デコレータはモデルをプレゼンテーション固有のメソッドでラップするため、次の代わりに次のようになります。
#CarsController.rb
def show
@car = Car.find(params[:id])
end
あなたが使用します
#CarsController.rb
def show
@car = CarDecorator.find(params[:id])
end
次のようにデコレータを定義します。
class CarDecorator < ApplicationDecorator
decorates :car
def horsepower
model.power.to_s + "hp" #call to_s just in case
end
end
その後、あなたの見解では、あなたが電話をしたときはいつでもあなたはの代わりに@car.horsepower
得るでしょう。このようにして、プレゼンテーションメソッドの大きくて長い再利用可能なリストを作成できます。継承を使用してオブジェクト間でメソッドを共有できます。また、元のモデルのメソッドを呼び出すこともできます。railscastやドキュメントなどを参照してください。Draperを使用することも、ライブラリを使用したくない場合は独自のプレゼンタークラスをロールすることもできます。123hp
123
前の回答(要約):
私はこれを行うための2つの素晴らしくて簡単な方法を見ることができます:
units
1)データモデルにのテキスト列を追加するだけです。IE:「400hp」を使用するには[data.value,data.units].join
2)おそらくActiveEnumUnits
のようなものの助けを借りて、モデルを持つことで、もう少し豊かな関連付けを得ることができます。