えっと,テーブル名やモデル名に漢字を使ってるのでしょうか? Ruby は確かに変数名やメソッド名に漢字が使えますが,やめておきましょう。
もし説明のために書き換えたのであれば,質問内容が分からなくなるので,実際のコードを書いてください。
さて,ご質問の内容が十分に分からないのですが,以下,「企業モデルと業種モデルの関連付けのやり方が分からない」という話だとして説明します。
そして,「一つの企業は一つの業種に属す」「一つの業種には 0 個以上の企業が属す」という話だと仮定します。
さてモデル名ですが,企業のほうは Company モデルだとします。
業種のモデル名ですが,CompanyType でよいかどうか,ちょっと私には分かりません。というのは,Rails では _type
が特別な意味をもつ場合があり,これに抵触しないか心配なのですが,私はそのへんはよく知らないんです。
なので,とりあえず無難な Companytype というモデル名にしてみます。
そうすると,関連は
rb
1class Company < ApplicationRecord
2 belongs_to :companytype
3end
rb
1class Companytype < ApplicationRecord
2 has_many :companies
3end
となります。
companies
テーブルには companytype_id
カラムが必要です。
慣れるまで,関連付けのためのカラム(今の場合は companytype_id
)をどちらのモデルに持たせればよいのか分からないかもしれません。
今の場合はこんなふうに考えましょう。
一つの業種,たとえば製造業を考えます。製造業の企業はいくつもありうるわけですから,製造業のほうにそれらの企業の id を持たせるのはおかしな話です。
一方,一つの企業,たとえばテラテイル株式会社を考えます。この会社はいずれか一つの業種に属すわけですから,この会社のカラムとして業種の id を持たせるのは理にかなっています。
そしてレールに乗ってやるなら,このカラムの名前は Companytype というモデル名を小文字化し,_id
を付けた companytype_id
となります。
そして,このカラムを持っているほうのモデルに belongs_to
を書きます。
belongs_to :companytype
は何をするかというと,これを書いたモデルのほうに,companytype
メソッドや companytype=
というメソッドを生やすのです。このメソッドは,内部で companytype_id
カラムを利用します。
一方,業種のほうで,この業種に属す企業の一覧がほしい,とかという需要がありますよね。
そのために使うのが
です。関連名が複数形になっていることに注意しましょう。
これにより,Companytype モデルで companies
メソッドが使えるようになります。このメソッドは内部で Company モデルの companytype_id
カラムを利用します。
詳しくは,たとえば Rails チュートリアルの 13.1.3 User/Micropostの関連付け などが参考になると思います。