class OrganizationModuleAttachment < ActiveRecord::Base
belongs_to :attachable, :polymorphic => true
end
class Document < ActiveRecord::Base
has_many :organization_module_attachments, :as => :attachable, :dependent => :destroy
def organization_module_attachment_ids=(values)
(values || []).each_with_index do |organization_module_id, index|
organization_module_attachments.build(:organization_module_id => organization_module_id, :attachable_type => "Document", :position => index + 1)
end
end
end
form.html.haml:
= f.select :organization_module_attachment_ids, options_for_select((@organization_modules || []).collect { |a| [a.name, a.id] }, (@document.organization_modules || []).collect { |a| a.id }), {}, { :class => "multiselect", :multiple => true }
Итак, в классе документа я пытаюсь построить organization_module_attachments.Я получаю сообщение об ошибке при создании вложения модуля организации при отправке формы.Я думаю, что rails предполагает, что внешний ключ вложения: document_id, хотя на самом деле он полиморфен и поэтому: attachable_id.Если я явно установлю: attachable_id в методе сборки, он будет работать нормально.
Я перепробовал несколько вещей и искал несколько дней без удачи.Кто-нибудь знает, как это сделать?