私のデータは、基本的にギャラリーには多くの画像があり、画像はギャラリーに属しています。ピクチャテーブルにforeign_key 'gallery_id'があります。has_many-belongs_toアソシエーションに関する問題
私は以前has_manyとbelongs_toの関連付けを使用していましたが、私は何が間違っているのか分かりません。
これらは私の関連するモデルは、次のとおりです。
class Gallery < ActiveRecord::Base
attr_accessible :name
has_many :pictures
belongs_to :home
end
class Picture < ActiveRecord::Base
belongs_to :gallery
validates :image, :presence => true
mount_uploader :image, ImageUploader
end
私が行う場合、これは:
gallery = Gallery.create(:name => 'some name')
picture = Picture.create(:name => 'some name' , :image => 'some_image')
picture.gallery = gallery
これが本当である:
picture.gallery == @gallery
が、このありえない
gallery.pictures == [ picture ]
0 gallery.picturesが空の配列を返すため、
が返されます。一方
私は絵をこのように作成した場合、すべてが期待どおりに動作:
picture = Picture.create(:name => 'some name' , :image => 'some_image', :gallery_id => gallery)
なぜ?私が間違っていることは何ですか?私はRails 3.1.1とsqliteを使用しています
おかげで、動作するはずですが、私はまだ理解していけない理由は、私の質問のdoesntの仕事のコード。すべての手がかりは? –
Railsがモデルをキャッシュする方法のために 'gallery'をデータベースから再ロードする必要があるためです。ギャラリーに画像を割り当てた後に 'gallery.reload'を呼び出すと、すべて正常に動作します。 –