скрепка полиморфная ассоциация и сохранение - PullRequest
1 голос
/ 18 февраля 2010

Я изменил свою модель 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"}

muffin.rb

has_many :photos, :as => :imageable, :dependent => :destroy

photo.rb

belongs_to :imageable, :polymorphic => true
has_attached_file :data,
    :storage => 's3',
    :s3_credentials.....

1 Ответ

4 голосов
/ 18 февраля 2010

У меня появилась идея использовать accepts_nested_attributes_for, поскольку это то, что я мог бы сделать, если бы это была не полиморфная ассоциация, а другая модель, в которую я бросал атрибуты ... и вуаля, это сработало.

  has_many :photos, :as => :imageable, :dependent => :destroy
  accepts_nested_attributes_for :photos
...