私の目標は、タグを使用して複数のクラス(イベント、組織、開発)のいずれかのオブジェクトに写真を関連付けるためのシステムを作成することです。私の人生のために、それはかなり一般的な状況のように思えるにもかかわらず、これを取り除くことはできません。Rails 3 - タグを使用して多形Taggableクラス
私は、最も基本的なRails開発以外では比較的新しいので、問題を形成するのは難しいです。間違いを犯してはいけません。
Tagモデル:
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宝石を使用しようとしている(私は後で写真の見解では、これらのタグ付けされたオブジェクトを呼び出すことができ、そして写真タグ付きオブジェクトのビューで)。
写真/ new.html.erb(私はnested_form
ジャバスクリプトが含まれている)
<% 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 %>
は、私が何をしようとしているに適した私のモデルの構造ですか?
と、
がどのように私はきちんと両方を指定することができ、そうならば、彼:taggable_idと:私のネストされた形でtaggable_type?
ご指導いただきありがとうございます!
タグはどこで再生されますか?私が誤解されていない限り(別個の可能性として)、これはタグと添付ファイルを互いに独立して扱うようです。私は 'has_many:attachments、:through =>:tags'のようなものを探しています。もしあなたが...できれば私を真っ直ぐにしてください! – jasonmklug