2

私の目標は、タグを使用して複数のクラス(イベント、組織、開発)のいずれかのオブジェクトに写真を関連付けるためのシステムを作成することです。私の人生のために、それはかなり一般的な状況のように思えるにもかかわらず、これを取り除くことはできません。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?

ご指導いただきありがとうございます!

答えて

0

フォトモデルを多形にして、attachment_fu/paperclipのようなものを使用して写真をアップロードする必要があります。

class Photo < ActiveRecord::Base 

    has_attachment :content_type => :image, 
       :storage => :file_system, 
       :max_size => 2000.kilobytes, 
       :resize_to => '500x500>', 
       :thumbnails => { :thumb => '215x215>'} 

    validates_as_attachment 

    belongs_to :attachable, :polymorphic => true 
end 

class Event < ActiveRecord::Base 
    has_many :tags, :as => :taggable, :dependent => :destroy 
    has_many :attachments, :as => :attachable 
end 

class Organization < ActiveRecord::Base 
    has_many :tags, :as => :taggable, :dependent => :destroy 
    has_many :attachments, :as => :attachable 
end 

class Development < ActiveRecord::Base 
    has_many :tags, :as => :taggable, :dependent => :destroy 
    has_many :attachments, :as => :attachable 
end 

写真のテーブルには、attachable_idとattachable_typeの列が必要です。これにより、多形写真モデルに保存された異なるオブジェクトに写真を追加することができます。タグ付けは多態的な関連付けを使用して同様の方法で動作します。プラグインのドキュメントが役立ちます。あなたのために働くことを願っています。

+0

タグはどこで再生されますか?私が誤解されていない限り(別個の可能性として)、これはタグと添付ファイルを互いに独立して扱うようです。私は 'has_many:attachments、:through =>:tags'のようなものを探しています。もしあなたが...できれば私を真っ直ぐにしてください! – jasonmklug

関連する問題