Rails从脚手架生成错误的属性名称

时间:2012-09-24 20:04:43

标签: ruby-on-rails

我正在编写一个关于视频游戏系统的rails应用程序。 我使用脚手架来生成包含字段

的模型
:owns_ps_vita
:owns_nintendo_wii_u

但我明白了:

 undefined method `owns_ps_vita'

在/app/views/mymodel/_form.html.erb页面上。

我打开了rails控制台并做了

 MyModel.new

在结果中看到了:

  owns_playstation_3: nil, owns: nil, ps_vita: nil,
  owns_nintendo_wii: nil, owns_nintendo_wii_

那里有一个额外的“拥有”应该附加到ps_vita,并且你从任天堂掉下来了。

我检查了app / models / MyModel.rb文件,看起来是正确的。

  owns_nintendo_wii, :owns_nintendo_wii_u, :owns_playstation, :owns_playstation_2, :owns_playstation_3, :owns_ps_vita,

我在终端向上滚动并验证我的脚手架在该位置周围没有打字错误,看起来很好。

2 个答案:

答案 0 :(得分:0)

如果您还没有schema.rb个文件,请运行rake db:migrate来创建数据库。

答案 1 :(得分:0)

我明白你做了什么。在创建迁移时,您是否做过这样的事情?

rails g migration add_stuff owns_nintendo_wii_u:string owns ps_vita:string
                                                           ^
                                                          (space)

您的迁移似乎已运行并创建了两列:ownsps_vita。您可以通过查看schema.rb或直接检查数据库来验证这一点。

如果您使用的是sqlite,那么您可以这样做:

$ sqlite3 db/development.sqlite3

> .schema
  (spits out schema)
> .exit