Rails - скрепка ROLLBACK благодаря ассоциациям - PullRequest
0 голосов
/ 24 сентября 2019

у меня 3 models.question, answer и photo.Я использую paperclip до save изображений.Questions и answers могут иметь multiple images.

Однако при сохранении изображений для модели answer я получаю ROLLBACK.Я не получаю ROLLBACK при сохранении изображений для question модели.Я думаю, что у меня проблема с model associations.

#photo model
class Photo < ApplicationRecord
  belongs_to :question 
  belongs_to :answer

  has_attached_file :image :path => ":rails_root/public/img/:filename", validate_media_type: false
  do_not_validate_attachment_file_type :image
end

#answer model
class Answer < ApplicationRecord
 belongs_to :question
 has_many :photos
end

#question model
class Question < ApplicationRecord  
  has_many :answers
  has_many :photos
end

Мой контроллер:

p.answers.each do |a|
  new_answer = q.answers.create(body: a[:body])
  if a[:images]
    a[:images].each do |e|
      new_answer.photos.create(image: URI.parse('www.abc.com/'+e))
    end
  end
end

Есть мысли?

1 Ответ

0 голосов
/ 24 сентября 2019

Поскольку рельсы 5, по умолчанию требуются belongs_to ассоциации.

Существует два возможных решения: либо написать

belongs_to :question, optional: true 

в вашей модели Photo, либо, когда вы сохраняете их через вложенную ассоциацию (немного похоже на вложенную форму)Вы должны четко указать, какая ассоциация обратна какой.

Таким образом, в своем классе ответов укажите обратную :photos ассоциацию

 has_many :photos, inverse_of: :answer 

(чтобы позволить рельсам правильно проверять правильность установки assign_to)

...