2011-01-12 10 views
0

私は複雑な多形関係が必要なシナリオを持っており、その中に助けが必要です。複合多形関係

私は「従業員」のような、任意のモデルに取り付けることができるAAモデル「文書」を、持っている、「ユーザー」など

は、私は別の文書

class Employee < ActiveRecord::Base 
    attach_documents_as :general_documents 
    attach_documents_as :meeting_documents 
end 

を添付するプラグインを開発しています私はこの点まで成功しました。しかし、より多くのものを得るためには、ドキュメントにいくつかの型を割り当てる必要があります。そのために、私はそのようなメインモデルでドキュメント型のモデル名を提供します。

ここ
class Employee < ActiveRecord::Base 
    attach_documents_as :general_documents, :general_doc_types 
    attach_documents_as :meeting_documents, :meeting_doc_types 
    attach_documents_as :job_record, :misc_doc_types 
end 

:general_doc_types , :meeting_doc_types, :misc_doc_types 

すべてのモデル名です。

私はこの

class Document < ActiveRecord::Base 
     attr_accessible :title, :description, :attachment 
     belongs_to :attachable, :polymorphic => true 
     has_attached_file :attachment 
end 

などの文書モデルはいずれかがどのように私は種類の異なるモデルへの文書の関係を作ることができるという考えを持つことができています。あなたのご意見をお待ちしております。

+0

ジェネレータやユーザ自身が 'general_doc_types'などのモデルを生成しますか?それが前者の場合、実際の関係が単純な 'has_many'と' belongs_to'になるという魔法をいくつか考えてみましたか? – PeterWong

答えて

0

単一のテーブル継承を使用して多態性の関係を作成しているようです。私は少しこれを探して、あまりにも多くの解決策を思い付かなかったので、より良いアプローチがあるかどうか疑問に思います。私はこれを前にしていないので、本当に確実に言うことはできません。私が見つけた1つの例は、セットアップがかなり簡単です。 http://www.mendable.com/2010/03/30/polymorphic-single-table-inheritance-sti.html

+0

私は例をチェックしましたが、それは私のシナリオに合っていません。一つは、私は単一のテーブルの継承を使用していないより多くの。ドキュメントには別のテーブルがあり、各ドキュメントタイプのモデル:general_doc_types、:meeting_doc_types、:misc_doc_types、すべてに別々のテーブルがあります。 –