2017-01-01 24 views
0

皆さんにおめでとう!Rails 5: "belongs_to through"関連の種類

私は古典的なhas_many through associationを持っている:

class Physician < ApplicationRecord 
    has_many :appointments 
    has_many :patients, through: :appointments 
end 

class Appointment < ApplicationRecord 
    belongs_to :physician 
    belongs_to :patient 
end 

class Patient < ApplicationRecord 
    has_many :appointments 
    has_many :physicians, through: :appointments 
end 

しかし、今私はclass Appointmentから別のモデルとbelongs_to関連しているとclass Examplebelongs_to関連にあると思われるいくつかのclass Examplehas_many関連付けを追加する必要があります。

可能であれば、この種のアソシエーションを設定する方法はありますか?ありがとうございます。

更新

この質問は、downvotedされている理由私は、理解していません。ここで は私がclass Exampleに必要なものです:

class Example < ApplicationRecord 
    belongs_to :appointment 
    belongs_to :model_bbb 
end 

アップデート2

[OK]を、私は私がthis answerからソリューションを使用することができます考え出しました。基本的に私は、「予定」モデルをドロップすると、このようなclass Exampleを持つことができます。

class Example < ApplicationRecord 
    belongs_to :physician 
    belongs_to :patient 
    belongs_to :model_bbb 
end 

そして、医師と患者に、私はhas_many :examplesと別のthrough関係を行うことができます。私はclass Appointmentの比較的小さなテーブルを持つことができるので、いくつかの奇妙なbelongs_to throughの事をしたかったが、class Exampleテーブルはかなり大きいと予想されます。だから私の最初の考えは何度も複製される余分な列を作成することではありませんでした。

+0

質問がわかりません。最後のスニペットで何が問題になっていますか?ところで、分類を改善するためにタグを編集してください - これはruby-on-rails-5スレッドなのでです。 – marmeladze

答えて

0

あなたは、あなたのAppointmentモデルクラスにhas_manyまたはhas_many throughを追加することができます。

belongs_to関連付けは、外部キーを持つテーブルの常にです。ですから、モデリングの段階であれば、examplesテーブルにたとえば、appointment_idが必要です。

アソシエイティブテーブルを他のアソシエーションとの関係で使用することは問題ありません。実際に中間テーブルを使用するという考えは、他の情報を格納することです(HABTMをやっていること以外)。

+0

ありがとうございます、上記の更新2をご確認ください。現時点では、私にとって最も効果的な解決策と思われます。他のアイデアがあればコメントしてください。 – matiss

関連する問題