2

私は Rails 3 プログラミングの初心者ですが、適切なモデルを作成する際に 1 つの問題があります。

本の参考文献を管理するアプリケーションがあるとします。つまり、参照された記事のリストの各章のマッピングを管理します。したがって、記事の部分については、次のようなものにすることができます。

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

参考文献側では、次のようなモデルが必要です

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

whererefは実際には記事への参照の配列であるため、serializeActiveRecord メソッドを介して管理されます。

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

このような関係をどのようにモデル化すればよいでしょうか? また、それを表現するにはどの Rails 3 コードを作成すればよいでしょうか? 私を混乱させるのは、 @bibliography の単一インスタンスの単一フィールドが多くの @article.id を参照することです。

前もって感謝します

4

2 に答える 2

4

そのような関係を本当に保存したい場合は、参考文献モデルでメソッドを定義します。

(refがIDの配列であると仮定します)

def articles
  Article.where(:id => self.ref)
end

ただし、関係の保存方法は異なります。article_idフィールドとbibliography_idフィールドを持つ3番目のテーブル/モデルarticles_bibliographiesを追加します。次に、ActiveRecordに組み込まれているhas_many:throughアソシエーションを使用できます。

参考文献のクラスでは、次のようになります。

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

その後、@bibliography.articlesを実行できます

詳細はこちらhttp://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

于 2011-01-05T15:05:34.917 に答える
0

egze の提案に従って、問題を解決する方法を見つけました (配列を使用せずに!)。したがって、has_many-through 関係を作成しますが、参考文献で言及されているように記事の順序を保存したいので、articles_bibliographies テーブルには order_nr フィールドもあり、ここに最初、2 番目などを保存します。参考文献に記載されている記事:

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

このようにして、要素の順序付きリストを取得して表示できます。

@bibliography.articles.order("order_nr ASC")
于 2011-01-09T20:58:41.097 に答える