テーブル「チーム」と「スケジュール」を関連付ける/結合する最善の方法を見つけようとして問題が発生しています。私のモデルは次のとおりです。
class Team < ActiveRecord::Base
attr_accessible :city, :conf, :div, :key, :name
self.primary_key = "key" #Abbreviations for strings 'CHI', 'TB', 'SEA' etc.
has_many :schedules, foreign_key: [:away_team, :home_team]
end
class Schedule < ActiveRecord::Base
attr_accessible :away_team, :date, :home_team, :season, :week, :team_key
self.primary_keys = :away_team, :home_team #Abbreviations for strings 'CHI', 'TB', 'SEA' etc.
belongs_to :team, primary_key: "key"
end
gem "composite_primary_keys", "~> 5.0.13" をインストールしました。
変数を割り当てるときのレールコンソールで
>> team = Team.find("SEA")
SELECT "teams".* FROM "teams" WHERE "teams"."key" = ? LIMIT 1 [["key", "SEA"]]
=> #<Team key: "SEA", city: "Seattle", name: "Seahawks", conf: "NFC", div: "West">
シアトルを完全に表示しますが、実行すると:
>> team.schedules
SELECT "schedules".* FROM "schedules" WHERE ("schedules"."away_team" = 'SEA' AND "schedules"."home_team" IS NULL)
=> []
「スケジュール」テーブルには、home_team 列に「SEA」のデータがあります。
結合テーブルはより良い解決策でしょうか? もしそうなら、どのようにしますか?どんな助けでも大歓迎です!