2012-01-05 23 views
20

BELONGS_TO私は2つのモデルRailsのモデルにhas_many、関係

class User < ActiveRecord::Base 
    has_many :products 
end 

class Product < ActiveRecord::Base 
    belongs_to :user 
end 

を持って、私は製品のテーブルに列のuser_idを追加する必要がありますまたはレールはそれがデフォルトで追加んですか?

答えて

47

Productモデルにuser_idの列を手動で追加する必要があります。まだモデルを作成していない場合は、列リストの参照をモデルジェネレーターに追加します。たとえば、次のように

rails generate model Product name:string price:decimal user:references

それとも、あなたのProductモデルはすでにあなたがしなければならない何かが存在する場合である:適切productsuser_id列を追加し、マイグレーションを生成すること

rails g migration addUserIdToProducts user_id:integer

表。カラム名が正しく(user_id)、Railsはあなたの外部キーを認識します。

+0

ねえ、私は 'postgresql'を使っています。私があなたが言及した最初の方法を使ってモデルを作成しました。 'user:references'を使ってください。 'user'モデルオブジェクトを削除しようとすると' PG :: ForeignKeyViolation: 'エラーが出ます。私の期待は、ユーザーを削除すると、 'user'の下にある' products'はすべて削除されるはずです。 PS:私の 'Product'モデルで' belongs_to:user、dependent::destroy'を持っています。 私は初心者です。 –

関連する問題