0

レコードモデルがあり、特定のレコードフィールドとなるようなフィールドモデルを作成したいと思いますhas_many。同様に、各フィールドがタグに関連付けられ、各フィールドhas_oneタグがタグに関連付けられるようにします。ただし、各タグはFieldオブジェクト間で何度も再利用できます。

belongs_to_manyこの場合、タグフィールドとだけ言いますか?同様に、フィールドbelongs_to_manyレコードと言うのは正しいでしょうか?

(最終的には、Recordオブジェクトを複数のフィールドのコンテナーにします。レコードが次のようになるように、新しいフィールドとタグを動的に追加できるフォームを想定しています。

Record 1
    Tag 1
    Field 1
    Tag 2
    Field 2
    ...

各タグは、既存のプールからプルすることも、オンザフライで作成することもできます)助けてくれてありがとう!

4

1 に答える 1

0

まず、関連付けに関する RoR ガイドを読むことを強くお勧めします: http://guides.rubyonrails.org/association_basics.html

RoR でアソシエーションを使用するのが初めての場合でも、修正が必要な場合でも、そのガイドをお読みください。

あなたの質問は論理的な質問のようですが、そのコードから始めます。

class Record < ActiveRecord::Base
   has_and_belongs_to_many :fields
...

class Field < ActiveRecord:Base
   has_and_belongs_to_many :records
   belongs_to :tag
...

class Tag < ActiveRecord:Base
   has_many :fields
...

各レコードは多くの異なるフィールドに接続し、各フィールドは多くの異なるレコードに接続します。これは、多対多の関連付けの典型的な例です。これらのモデルを実際に使用するときのコード内のロジックは、レコード モデルをコンテナーのように見せるものです (技術的には、フィールドは多くのレコードのコンテナーであると言えるからです)。

各フィールドには 1 つのタグが関連付けられていますが、同じタグを任意の数のフィールドで使用できます (フィールドはタグを再利用していると言えます)。これは 1 対多の関連付けです。この接続を作成するときは、Field モデルで belongs_to を使用し、Tag モデルで has_many を使用します。

タグはフィールド モデルに接続されているため、探しているロジック: レコードはフィールドとタグのコンテナーであり、このセットアップでは理にかなっています。

レコード内のタグをフェッチする簡単な例を次に示します。

#Returns the Tag Associated with the first field
#"inside" the first Record in the database.

Record.first.fields.first.tag

同様に、簡単に反対方向に進むこともできます:

Tag.first.fields.first.records.first


コマンドラインからRailsコマンドを活用して、移行とモデルをすばやくセットアップしてください。関連付けが削除されたとき、保存されたときなどにどのように関連付けを処理するかに関するオプションについては、上部のガイドを読んで、探しているものを見つけてください。

于 2012-05-23T20:44:05.573 に答える