2011-01-05 12 views
2

私はRails 3プログラミングの初心者です。正しいモデルの作成には1つの問題があります。配列とのHABTMの関係

はのは、参照記事のリストの各章のマッピングを管理している書籍の書誌情報を管理するためのアプリケーションがあるとしましょう。私のようなものかもしれない記事の一部 のためのよう:書誌側で

create_table :articles do |t| 
    t.string :title 
    t.text :content 
    ... 

を私はそう、refが実際に記事への参照の配列です

create_table :bibliographies do |t| 
    t.string :chapter 
    t.text :ref 
    ... 

ようなモデルを持っていると思いますそれはserialize ActiveRecordメソッドによって管理されます。

ここで問題は、配列@bibliography.refの要素が(Rubyの意味で)複数のarticle_idの参照になるようにすることです。

はどのような関係をモデル化するか、と私はそれを表現するためにどのような3コードをレール書くべき? 私を混乱させることは、@bibliographyの1つのインスタンスの1つのフィールドが多くの@ article.idを参照するということです。あなたが本当にそのような関係を保存したい場合は、事前

+0

TI記事に関連する外部キーをシリアル化のポイントは何ですか?なぜあなたは通常の習慣を使わないのですか?私は本当に理解していない、ごめんなさい – apneadiving

答えて

4

おかげで、私は、参考文献のモデルでは、この

(refはIDの配列であると仮定すると)

ような何かをする方法を定義します
def articles 
    Article.where(:id => self.ref) 
end 

私は関係を別々に保存します。 article_idフィールドとbibliography_idフィールドを持つ3つ目のテーブル/モデルarticles_bibliographiesを追加します。次に、ActiveRecordに組み込まれているhas_many:throughアソシエーションを使用できます。ご参考文献クラスの

あなたは、その後のようなものだろう:あなただけegzeの提案に続いてよりここhttp://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

+0

ありがとう、私は私の配列を保つことができるまで、私はそれを実装する方法で作業しますので、多くを介して関係を使用する可能性を除外しませんでした。 – bitwelder

0

読むbibliography.articles

@行うことができ、その後

has_many :articles_bibliographies 
has_many :articles, :through => :articles_bibliographies 

を、私が見つけました私の問題を解決する方法(配列を使わずに!)。 したがって、私はhas_many-through関係を作成しますが、 記事の参考文献をそれらの参考文献に記載する方法を保存したいので、テーブルarticles_bibliographies にはorder_nrフィールドもあります。私が取得し、持つ要素の順序付きリストを表示することができます

create_table :articles_bibliographies do |t| 
    t.references :article 
    t.references :bibliography 
    t.integer  :order_nr 

この方法::などの記事は、参考文献で を述べ

@bibliography.articles.order("order_nr ASC") 
関連する問題