2016-09-16 5 views
0

私は1週間前に自分のモデルを作成しましたが、私が今知っていることはたくさん知りませんでした。多くのラボを持つことができ、多くの申し出 多くのアソシエーションとhas_manyを経由して、

  • オファーモデルを持つことができます

    1. ラボモデルを:私が達成したい何

      は作成することです。

      #MIGRATION FILES BELOW: 
      class CreateLabs < ActiveRecord::Migration[5.0] 
          def change 
          create_table :labs do |t| 
           t.string :name 
           ... 
      
           t.timestamps 
          end 
          end 
      end 
      
      class CreateOffers < ActiveRecord::Migration[5.0] 
          def change 
          create_table :offers do |t| 
           t.string :name 
           ... 
      
           t.timestamps 
          end 
          end 
      end 
      
      # Join table: 
      class CreateLabChain < ActiveRecord::Migration[5.0] 
          def change 
          create_table :lab_chain do |t| 
           t.references :lab, foreign_key: true 
           t.references :offer, foreign_key: true 
           t.timestamps 
          end 
          end 
      end 
      

    そして、ここでのモデルファイルがどのように見えるかです:

    class Lab < ApplicationRecord 
        has_many :offers, through: :lab_chain 
        has_many :lab_chains 
    end 
    
    class Offer < ApplicationRecord 
        has_many :labs, through: :lab_chain 
        has_many :lab_chains 
    end 
    
    class LabChain < ApplicationRecord 
        belongs_to :lab 
        belongs_to :offer 
    end 
    

    私はちょうど私が私が見てきたすべてのそれらのチュートリアルについてわからないように私が正しくそれをすべてを書いたかどうかを知りたいです読んでください。

    私のオファーには多くのセクションがあり、セクションには多くのoffer_itemsが必要ですか?私は追加する必要があります:

    を提供する:

    has_many :offer_items 
    belongs_to :offer 
    

    とOfferItemする:

    belongs_to :section 
    

    節へ

    has_many :sections 
    has_many :offer_items, through: :section 
    

    、その後の? 私が前に述べたように、私はコード(別の言語)と関係がある唯一の人だったので、私たちの学校プロジェクトのウェブサイトを作る人としてボランティアでした。それは私が思ったよりも難しいです。

    EDIT

    どのようにしても、正しく自己を追加するセクションに参加し、そのセクションには、上のサブセクションを持っているとことができますか?

    セルフは、多くの協会への正しい多くのように見えるんマイグレーションファイル

    t.references :parent_section, foreign_key: "section_id" 
    
  • 答えて

    1

    に追加セクションモデル

    has_many :child_sections, class_name: "Section", foreign_key: "section_id" 
    belongs_to :parent_section, class_name: "Section" 
    

    にaddded合流します。また、あなたは正しいように見えます。

    3つ以上のテーブルを持つ任意のデータベースの図を描画するのに役立ちます。これを仕事としてやる予定がある場合は、書込みの中核として完全なテーブル関係を完全に把握する価値があります良いモデルコード。

    +0

    アドバイスありがとうございます!セクションモデルに自己結合を追加したいのですが?したがって、セクションにはサブセクションがありますか?コードを含むコードを編集 – Ancinek

    +1

    @Ancinek自己結合を実行する場合は特に、サブセクションモデル/テーブルは必要ありません。セクションテーブルにはparent_id列が必要です。カテゴリは、別のカテゴリレコードを示すparent_id値を持つサブカテゴリです。 parent_idがNULLのカテゴリはトップレベルのカテゴリです。したがって、has_many:sub_section、class_name: "Section"、foreign_key::parent_idなどのコードを作成できます。その後、セクションテーブルにparent_id列を追加するための移行を作成する必要があります。 –

    関連する問題