Railsアソシエーションに関する初心者の質問です。
バグモデルとステータスモデルがあります。ステータスは基本的に単なるキー/値ペアテーブルです。利用可能な選択肢の中で、バグhas_oneステータスが最も理にかなっていると思います。ただし、 this によると
コンテンツbelongs_toContentTemplate。戻って、私が問題をどのように説明したかを見てください。それが機能することがわかります。 [belongs_to]を使用すると、テーブルは外部キーの責任を引き受けます。したがって、コンテンツにはcontent_template_idがあります。そして、ContentTemplateは何も必要としません。私はそれを自由に指摘することができます。完了。
バグbelongs_toステータスの方が適切です(バグは外部キーを取る必要があるため)。意味的には、彼の例は理にかなっていますが、私の例は何も意味がありません。これはRailsの癖ですが、この状況では奇妙に見えますか、それとも私は何かを理解していない/間違っているのですか?
はい、Railsで少し奇妙に見えるシナリオを見つけたと思います。 「ステータス」をバグが属するカテゴリの一種と見なすと便利な場合があると思います。その観点からすると、それは理にかなっています。
TABLE:
Bug
id integer
desc string
status_id integer fk
Status
id integer
desc string
Rails MODEL:
Bug
belongs_to :status
Status
has_many :bugs
バグとステータスの関係について正確に説明していませんが、次のいずれかに関心があると思います。
has_many
があり、ステータスクラスにはbelongs_to
があるはずです。has_one
があり、ステータスクラスにはbelongs_to
があるはずです。どちらの場合も、ステータスには外部キーが含まれます。 2番目のケースでは、1対1の関係が実際には非対称であるため、表現が少し奇妙です(片側にのみFKがあるはずです)。
Statusが単なるルックアップ/ Key-Valueテーブルである場合、StatusとBugの間に habtm (_has_and_belongs_to_many
_)の関係が必要なようです。 habtmを使用すると、最終的には_bugs_statuses
_結合テーブルになります。このテーブルには_bug_id
_列と_status_id
_列、およびバグとステータスのテーブルがあります。