Я создаю систему тегов для трех разных типов объектов.У меня проблемы с реализацией его как ассоциированного, полиморфного атрибута.Кажется, что редактирование существующего контакта работает (оно создает связанную запись), но при создании нового контакта оно просто не создает другую запись.Существует только одна связанная запись, поскольку каждый тег записывается в одно длинное текстовое поле в виде одной строки.
contact.rb:
class Contact < ActiveRecord::Base
has_one :tag, :as => taggable
accepts_nested_attributes_for :tag, :allow_destroy => true,
:reject_if => :all_blank
tag.rb:
class Tag < ActiveRecord::Base
belongs_to :taggable, :polymorphic => true
contacts_controller.rb:
def new
@contact = Contact.new
@contact.tag = Tag.new
end
def edit
@contact = Contact.find(params[:id])
if @contact.tag.nil?
@contact.tag = Tag.new
end
end
new.html.erb:
<%= fields_for :tag do |tag| %>
<div class="clearfix">
<%= tag.label :tags, 'Tags' %>
<div class="input">
<%= tag.text_field :tags %>
</div>
</div>