Rails 3 NoMethodError:nil的未定义方法`name':NilClass

时间:2011-04-17 19:58:06

标签: ruby ruby-on-rails-3 activerecord arel

每当我尝试使用

Table.create :a=>"a", :b=>"b"

tab=Table.new
tab.a="a"
tab.b="b"
tab.save!

生成

  

NoMethodError:nil的未定义方法`name':NilClass

我的桌子型号是

class Table < ActiveRecord::Base  
 set_table_name "table"
 set_primary_key "id"
end

2 个答案:

答案 0 :(得分:4)

正如大家所说,TABLE是一个保留词。为了将来的参考,如果确实想要使用这些保留字,在你的sql查询中(我知道你使用的是AR抽象),你必须使用这样的反引号:

SELECT * FROM `TABLE`

但我强烈建议更改您的表名。另外需要注意的是,您不必将主键设置为id,因为默认情况下rails会使用id作为PK。

答案 1 :(得分:2)

TABLE是MySQL中的保留字。

更多保留字结帐:

  

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html