Rails 3 — Прикрепление полиморфной модели изображения в виде разных типов изображений для каждой модели, что я делаю не так?

#ruby-on-rails #carrierwave #polymorphism

#ruby-on-rails #carrierwave #полиморфизм

Вопрос:

я продолжаю получать ActiveRecord::UnknownAttributeError:

неизвестный атрибут: imageable_id

код:

полиморфная модель изображения:

 class Image < ActiveRecord::Base
  mount_uploader :asset, ImageUploader
  belongs_to :imageable, :polymorphic => true
end
  

модель, которая пытается создать полиморфную ассоциацию для 2 разных типов изображений:

 has_one :image, :as => :imageable, :dependent => :destroy 
accepts_nested_attributes_for :image

has_one :thumbnail, :as => :imageable, :dependent => :destroy 
accepts_nested_attributes_for :thumbnail
  

действие контроллера, которое пытается построить изображения (на самом деле срабатывает первое «build_image», ошибка ссылается на «build_thumbnail»:

 def new
  @item = @item_class.new #item is instantiated elsewhere
  @item.build_image #this works
  @item.build_thumbnail #this throws my error "unknown attribute: imageable_id"
end
  

Спасибо!

ИСПРАВЛЕНО РЕДАКТИРОВАНИЕ

Комментарии:

1. Я думаю , что вам нужно добавить параметр :class_name => Image к связи has_one : thumbnail, но я не публикую формальный ответ, потому что у меня нет времени на тестирование 🙂

2. @Chris: я согласен! вы должны опубликовать это в качестве ответа

Ответ №1:

Вам просто нужно добавить параметр :class_name => Image в отношение has_one :thumbnail. (спасибо, что проверил меня @Tilo)