2016-06-17 7 views
3

私のデータベースデザインには、EmployeeとManagerという2つのエンティティがあります。 マネージャISA従業員。私はMyApp.Managerモジュールが行くべきかわからないプライマリキーと外部キーの両方のフィールドを持つエコースキーマ

create table(:employees) do 
end 

create table(:managers, primary_key: false) do 
     add :id, references(:employees, on_delete: :delete_all), primary_key: true 
end 

これは私が従業員と経営者のテーブルを定義した方法です。 idカラムのみがカスタムプライマリキーだった場合、それは次のようになります。idが主キーと従業員のテーブルへの外部キーの両方である:

@primary_key {:id, :integer, []} 
schema "managers" do 
end 

しかし、どのように、私はあることを示す必要がありますか?

答えて

6

belongs_toマクロはあなたを助けることができるそのうちのいくつかはカップルのオプションが、持っている:あなたはまた、既存のを使用しますdefine_field: falseオプションを使用することができます

  • 、外部キーの名前を指定することができます

    • foreign_key: :idを外部キーのスキーマフィールドをスキップして、それ自身のスキップフィールドをスキップします。

    最終schema宣言は次のようになります

    @primary_key {:id, :integer, []} 
    schema "managers" do 
        belongs_to :employee, Employee, define_field: false, foreign_key: :id 
    end 
    
  • 関連する問題