Проблемы с has_many - принадлежат к ассоциации - PullRequest
1 голос
/ 28 октября 2011

Мои данные в основном имеют галерею (-ы) и много изображений, а изображения принадлежат галерее.таблица рисунков имеет внешний_ключ "gallery_id".

Хотя раньше я уже использовал ассоциации has_many и own_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

но этоisnt

gallery.pictures == [ picture ]

, поскольку gallery.pictures возвращает пустой массив.

С другой стороны, если я создаю изображение таким образом, все работает, как ожидалось:

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

Почему?Что я делаю не так?Я использую Rails 3.1.1 и sqlite

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

должно работать

gallery.pictures.create :name => 'some name' , :image => 'some_image'
0 голосов
/ 28 октября 2011

При добавлении картинок в вашу галерею. Попробуйте выполнить задание наоборот.

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

Это обновит метод #pictures для возврата вновь назначенного изображения.

...