Моя цель - создать систему для связывания фотографий с объектами из любого из нескольких классов (События, Организации, Разработки) с использованием тегов.Что касается меня, я не могу заставить это работать, несмотря на то, что это кажется довольно распространенной ситуацией.
Я относительно новичок во всем, кроме самой базовой разработки RailsПоэтому мне трудно сформулировать вопрос.Прошу прощения за любые ошибки.
Модель метки:
class Tag < ActiveRecord::Base
attr_accessible :photo_id, :taggable_id, :taggable_type
belongs_to :photo
belongs_to :taggable, :polymorphic => true
end
Фотомодель:
class Photo < ActiveRecord::Base
attr_accessible :tags_attributes
has_many :tags, :dependent => :destroy
accepts_nested_attributes_for :tags, :reject_if => lambda { |a| a[:taggable_id].blank? }
end
Модель события:
class Event < ActiveRecord::Base
has_many :tags, :as => :taggable, :dependent => :destroy
end
Модель организации:
class Organization < ActiveRecord::Base
has_many :tags, :as => :taggable, :dependent => :destroy
end
Модель разработки:
class Development < ActiveRecord::Base
has_many :tags, :as => :taggable, :dependent => :destroy
end
В моих полях Фото я пытаюсь использовать камень nested_form для добавления тегов к фотографии(чтобы позже я мог вызывать эти помеченные объекты в представлениях фотографии, а фотографию - в представлениях помеченных объектов).
photos / new.html.erb (я включил nested_form
javascript)
<% nested_form_for @photo, :html => { :multipart => true } do |f| %>
...
<%= f.fields_for :tags do |tag_form| %>
<%= tag_form.collection_select :taggable_id, Taggable.all, :id, :name %>
<%= tag_form.link_to_remove "remove" %>
<% end %>
<p><%= f.link_to_add "Add tag", :tags %></p>
...
<% f.submit "Add photo" %>
<% end %>
Подходит ли структура моих моделей для того, что я пытаюсь сделать?
и, если да,
Как можноЯ правильно указал и he: taggable_id и: taggable_type в моей вложенной форме?
Заранее спасибо за любые рекомендации!