내 데이터는 기본적으로 갤러리에는 많은 그림이 있고 그림은 갤러리에 속합니다. 그림 테이블에 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)
이유는 무엇입니까? 내가 뭘 잘못하고 있니? 레일 3.1.1 및 sqlite를 사용하고 있습니다
감사를 작동해야하지만 난 아직도 이해 해달라고 왜 내 질문에 나던 작업의 코드. 모든 단서? –
레일스가 모델을 캐싱하는 방식 때문에'갤러리 '를 데이터베이스에서 다시로드해야하기 때문에 네. 갤러리에 그림을 지정한 후에'gallery.reload'를 호출하면 모두 잘 작동합니다. –