Вопрос

Я изменил свою модель 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top