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我得到一个错误 undefined method:team 我知道 rails 不喜欢我将他们指定为 team 类型的方式。

我怎样才能让它发挥作用,就像在创建夹具时我希望能够从已经存储在团队表中的团队列表中进行选择一样?

4

1 回答 1

1

顺便说一句,ruby/rails 中的约定是使用下划线而不是 camelCase 来表示变量和方法。

关于你的实际问题!您需要自己在生成的模型TeamFixture模型中设置关系。脚手架可以通过获得正确的外键来帮助您建立关系。

对于 Fixture 脚手架,像这样生成它:

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

请注意,这g是一个快捷方式,generator并且生成器不需要大写任何内容。

现在,在您的Team模型中,您需要定义与 the 的关系,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 回答