我是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
我得到一个错误未定义的方法:团队我理解rails不喜欢我指定团队作为类型团队的方式。
我怎样才能让这个工作起作用,就像创建一个夹具一样,我希望能够从已经存储在团队表中的团队列表中进行选择?
答案 0 :(得分:1)
另外,ruby / rails中的约定是使用下划线而不是camelCase用于变量和方法。
关于你的实际问题!您需要在生成的Team
和Fixture
模型中自行设置关系。通过获取正确的外键,脚手架可以帮助您设置关系。
对于Fixture脚手架,请按以下方式生成:
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