在Rails Scaffold中调用创建的对象

时间:2012-12-09 23:36:59

标签: ruby-on-rails ruby undefined scaffold rails-generate

我是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不喜欢我指定团队作为类型团队的方式。

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

1 个答案:

答案 0 :(得分: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

请注意,ggenerator的快捷方式,生成器不需要任何大写字母。

现在,在您的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