我的数据基本上是画廊有很多图片,并且图片属于画廊。图片表有 foreign_key 'gallery_id'。
虽然我之前使用过 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 ]
因为gallery.pictures 返回一个空数组。
另一方面,如果我以这种方式创建图片,一切都会按预期进行:
picture = Picture.create(:name => 'some name' , :image => 'some_image', :gallery_id => gallery)
为什么?我做错了什么?我正在使用 Rails 3.1.1 和 sqlite