【问题标题】:Rails 3 NoMethodError: undefined method `name' for nil:NilClassRails 3 NoMethodError:nil:NilClass的未定义方法“名称”
【发布时间】:2011-04-17 19:58:05
【问题描述】:

每当我尝试使用时

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

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

产生

NoMethodError: nil:NilClass 的未定义方法“名称”

我的表模型是

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

【问题讨论】:

  • 调用 SQL 表 table 是自找麻烦。至少叫它tables :)

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


【解决方案1】:

正如大家所说,TABLE 是保留字。为了将来参考,如果您真的想在您的 sql 查询中使用这些保留字(我知道您正在使用 AR 抽象),您将不得不像这样使用反引号:

SELECT * FROM `TABLE`

但是,我强烈建议您更改表名。需要注意的另一件事是,您不必将主键设置为 id,因为 rails 默认使用 id 进行 PK。

【讨论】:

    【解决方案2】:

    TABLE 是 MySQL 中的保留字。

    更多保留字结帐:

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

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 2015-06-22
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多