0

Railsを初めて使用し、サッカーの結果アプリを作成しました。rails generate Scaffold Team name:string form:string次に、テーブルにいくつかのチームを追加しました。次のステップは、チームを格納するFixturesテーブルを作成することでした。そのためrails generate Scaffold Fixture week:string homeTeam:team awayTeam:team homeScore:integer awayScore:integer、データベースを更新しようとしました。実行するrake db:migrateと、エラーが発生します。未定義のメソッド:チーム私が理解しているチームは、レールがチームをタイプチームとして指定する方法が好きではありません。

チームテーブルにすでに保存されているチームのリストから選択できるようにしたいフィクスチャを作成するときに、これを機能させるにはどうすればよいですか?

4

1 に答える 1

1

余談ですが、Ruby/Rails の慣習では、変数とメソッドにキャメルケースではなくアンダースコアを使用します。

あなたの実際の質問に!Team生成されたモデルとモデルで関係を自分で設定する必要がありますFixture。スキャフォールディングは、適切な外部キーを取得することで関係をセットアップするのに役立ちます。

Fixture scaffold の場合、次のように生成します。

rails g scaffold fixture week:string home_team_id:integer away_team_id:integer home_score:integer away_score:integer

これgはのショートカットでgeneratorあり、ジェネレーターは大文字にする必要がないことに注意してください。

ここで、Teamモデル内で との関係を定義し、その逆の関係を定義しますFixture(私はスポーツの専門家ではありませんが、名前を付けたGame方が意味がありませんか?)。

class Team < ActiveRecord::Base
    has_many :home_games, :class_name => Fixture, :foreign_key => :home_team_id
    has_many :away_games, :class_name => Fixture, :foreign_key => :away_team_id
end

class Fixture < ActiveRecord::Base
    belongs_to :home_team, :class_name => Team
    belongs_to :away_team, :class_name => Team
end
于 2012-12-09T23:56:43.593 に答える