Полиморфная ассоциация и сохранение скрепки
-
21-09-2019 - |
Вопрос
Я изменил свою модель photo.rb, чтобы она стала полиморфной и ее можно было использовать для всех видов других моделей, которым необходимо сохранять изображения, и она работает нормально, за исключением того, что я не могу понять, как правильно сохранять новые вложения через родительскую модель.Есть идеи?Должен ли я как-то подойти к этому по-другому?Кроме того, он также не получает imageable_type... который мне придется добавить.
Я видел плагин полиморфной скрепки, который выглядит как зверь и использует еще одну таблицу?Так что я надеюсь на лучший обходной путь.
Я получаю:
ActiveRecord::AssociationTypeMismatch (Photo(#2189565500) expected, got Array(#2148226700))
Parameters: {"commit"=>"Create", "action"=>"update", "_method"=>"put", "authenticity_token"=>"kp7NeMs7moGwu0AZMXVowUpphp9vzitdZZ6t8YO7RKQ=", "id"=>"2586", "muffin"=>{"photos"=>{"data"=>#<File:/var/folders/4d/4dqp9CQQEbmM1akqbtLxzk+++TI/-Tmp-/RackMultipart20100218-11622-onqem2-0>}}, "controller"=>"muffins"}
маффин.рб
has_many :photos, :as => :imageable, :dependent => :destroy
фото.рб
belongs_to :imageable, :polymorphic => true
has_attached_file :data,
:storage => 's3',
:s3_credentials.....
Решение
У меня возникла идея использовать Accepts_nested_attributes_for, поскольку именно это я мог бы сделать, если бы это была не полиморфная ассоциация, а другая модель, в которую я добавлял атрибуты.и вуаля, это сработало.
has_many :photos, :as => :imageable, :dependent => :destroy
accepts_nested_attributes_for :photos