1

特定の方法で解決した問題がありますが、満足のいくものではありません。

私はゲーム モデルを持っています。ゲームには常に、チーム モデルの一部である 2 つのチームが関係しています。これらのチームは、team1_id と team2_id という ID で参照します。私の見解では、チームの記録全体を取得したいときはいつでも、毎回検索を行う必要があります。

多対多の関係を経由せずにこれら 2 つのチームを参照する方法があるかどうか疑問に思っていましたが、それが唯一の方法ですか? それはほとんど 2 対多の関係になります。存在しないことはわかっていますが、この種の問題を解決する最善の方法を知りたいです。

ありがとうございました、

これは私の移行のスナップショットです:

create_table :games do |t|
  t.datetime "time"
  t.integer "team1_id"
  t.integer "team2_id"


create_table :teams do |t|
  t.references :city
  t.references :user
  t.string "name", :default => "", :null => false  
4

1 に答える 1

3

設定方法は正しい方法です。Game モデルで、team1 と team2 の 2 つのチーム参照を作成します。

class Game 
  belongs_to :team1, class_name: 'Team'
  belongs_to :team2, class_name: 'Team'
end

次に、ゲーム インスタンスで team1 と team2 を呼び出すだけで、チームがプルされます。

game = Game.first
game.team1
game.team2

または、Game モデルから team1 と team2 の ID を削除して、ゲームとチームを含む結合テーブルを作成することもできます。これを「game.teams」と呼びます。

于 2013-02-13T02:14:47.893 に答える