class User < ActiveRecord::Base
has_many :boxes
has_many :books
end
class Box < ActiveRecord::Base
belong_to :user
has_many :books
end
class Book < ActiveRecord::Base
belongs_to :user
belongs_to :box
end
でのビルド方法についての混乱私は、コンソールに以下の実行したときに、私は期待して、それは動作しますが、新しいボックスを作成し、ボックスActiveRecordの
>> u = User.first
>> u.boxes.build(:height => 3, :width => 1, :length => 4)
>> u.save
へのuser_idを取り付けるので、私はさらに行くとこれを試みなさい。 box_idは設定されていますが、本のuser_idは設定されていません。
>> u.boxes.first.books.build(:title => 'Reading is fun')
>> u.save
私はここでかなり基本的な概念がないようです。あなたがここにbox
のために呼び出されbuild
方法だから
u.boxes.first.books.build(:title => 'Reading is fun', :user_id => u.id)
でなければなりません
これは多くの意味があります。私はそれがhas_many:throughの関係と関係していたと感じました。 – mkly
それでは、私はこの本にユーザーIDを渡す必要があります。なぜなら、それは遠くまで見ることができないからです。これは非常に役に立ちます。ありがとうございました。 – mkly
':through'を使用していない場合のみ。 ':through'を使用している場合、' books'テーブルは 'user_id'カラムを必要とせず、すべてが' Box'モデルを介して自動的に設定されます。 – Chowlett