についての詳細情報を取得する必要があることを、想定することができるが、ここで私は、最初のスキーマを構築する方法を示します。
class Product < ActiveRecord::Base
belongs_to :manufacturer
belongs_to :category
end
class Manufacturer < ActiveRecord::Base
has_many :products
end
class Category < ActiveRecord::Base
has_many :products
end
rating
のように、モデルを作成するかどうかは、レーティングの入力方法によって異なります。評価が単一のソースによって決定された場合、私はそれを製品モデルの属性として保存するだけです。ユーザの入力に基づいて何らかの計算によって評価が決定された場合、ratings table
をbelongs_to :product
と考えることがあります。
価格については、Product model
に価格を保存するのが最善の策だと思われます。私はこのような移行にレールジェネレータrails g migration AddPriceToProducts price:decimal{8.2}
または直接に行うことができる8の精度と2のスケールと小数点として価格を格納します:これはBigDecimal
として価格を格納します
class AddPriceToProducts < ActiveRecord::Migration
def change
add_column :products, :price, :integer{8.2}
end
end
を、小数点の左側に6桁、右側に2桁を許可します。
最後に、あなたのアプリが製品を販売しようとしている場合は、InvoiceProducts
などと呼ばれるテーブルを持っていることをお勧めします。これにより、製品価格の変化や製品の廃止に伴い、正確な長期データが得られます。
ジョインテーブルと外部キーについてもう少しお読みください。 [このチュートリアル](http://www.theodinproject.com/ruby-on-rails/active-record-associations)を参照してください。 –
私はそれについてもっと詳しく読んでいます。リンクありがとうございました。 – Riggs