has_many - belongs_to关联的问题

时间:2011-10-28 15:28:17

标签: ruby-on-rails-3 has-many belongs-to model-associations

我的数据基本上是图库有许多图片,而图片属于图库。图片表中有foreign_key'brow_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

2 个答案:

答案 0 :(得分:2)

它应该有用

gallery.pictures.create :name => 'some name' , :image => 'some_image'

答案 1 :(得分:0)

将图片添加到图库时。尝试以相反的方式完成任务。

gallery = Gallery.create(:name => 'some name')
picture = Picture.create(:name => 'some name' , :image => 'some_image')
gallery.pictures << picture

这将更新#pictures方法以返回新分配的图片。