0

我目前正在为现有数据库开发管理工具,在搭建特定表时遇到了一个奇怪的问题。

这是使用的表的架构rake db:schema:dump

create_table "locality", :force => true do |t|
    t.integer "version",             :limit => 8,                  :null => false
    t.string  "truth_id",                                          :null => false
    t.string  "truth_record_id",                                   :null => false
    t.binary  "deleted",             :limit => 1,                  :null => false
    t.string  "internal_code",                                     :null => false
    t.string  "iso_code"
    t.string  "materialized_path",                                 :null => false
    t.string  "invariant_name",                                    :null => false
    t.binary  "published",           :limit => 1,                  :null => false
    t.float   "geo_point_latitude",               :default => 0.0
    t.float   "geo_point_longitude",              :default => 0.0
    t.string  "class",                                             :null => false
    t.integer "hut_count",                        :default => 0
    t.integer "hotel_count",                      :default => 0
    t.string  "destination_url"
  end

 add_index "locality", ["truth_record_id"], :name => "truth_record_id", :unique => true

我使用schema_to_scaffold gem 从转储的模式创建我的脚手架:

rails g scaffold locality version:integer truth_id:string truth_record_id:string
  deleted:binary internal_code:string iso_code:string materialized_path:string 
  invariant_name:string published:binary geo_point_latitude:float 
  geo_point_longitude:float class:string hut_count:integer hotel_count:integer 
  destination_url:string

此工作流程适用于许多其他表,但是在 rails 控制台中访问 /localities 或 Locality.all 时,我得到了它:

irb(main):001:0> Locality.all
Locality Load (2.1ms)  SELECT `locality`.* FROM `locality` 
NoMethodError: undefined method `attribute_method_matcher' for "Country":String

“国家”:字符串来自哪里?起初我认为模型名称“locality”在某种程度上是 i18n 东西的 rails 保留者,但在命名模型“Bla”时会发生同样的问题。

我正在使用 rails 3.2.13 和 MySQL 数据库。

4

2 回答 2

2

我相信你的专栏:class 是无效的。由于该类已经是 ruby​​ 中任何对象的方法,您将如何访问该列?

我认为这会导致混乱。您加载的位置的类列的值是“国家”对吗?

于 2013-04-25T12:26:02.640 回答
0

所以问题出在名为 的列上class,而 ruby​​ 显然讨厌这个列。

此 StackOverflow 问题中发布的解决方案:Rails 中列名为“class”的旧表

或更具体地说,在这篇博文中(25.03.2013 访问): http: //kconrails.com/2011/01/28/legacy-database-table-column-names-in-ruby-on-rails-3/

于 2013-04-25T12:47:39.120 回答