无法弄清楚为什么我的种子文件正在创建没有数据的行

Can't figure out why my seed file is creating rows with no data

我正在使用 Rails 4.2.3 和 PostGre 数据库。作为我的“rake db:seed”命令的一部分,我有这个文件 运行

Country.delete_all
Country.connection.execute("ALTER SEQUENCE countries_id_seq RESTART WITH 1")
Country.create(:id=>1,:iso=>"AD",:name=>"Andorra")
Country.create(:id=>2,:iso=>"AE",:name=>"United Arab Emirates")
Country.create(:id=>3,:iso=>"AF",:name=>"Afghanistan")
Country.create(:id=>4,:iso=>"AG",:name=>"Antigua and Barbuda")
Country.create(:id=>5,:iso=>"AI",:name=>"Anguilla")
Country.create(:id=>6,:iso=>"AL",:name=>"Albania")
…

这是 table 描述的……

\d countries;
                              Table "public.countries"
 Column |       Type        |                       Modifiers                        
--------+-------------------+--------------------------------------------------------
 id     | integer           | not null default nextval('countries_id_seq'::regclass)
 iso    | character varying | 
 name   | character varying | 
Indexes:
    "countries_pkey" PRIMARY KEY, btree (id)

但是在 运行 上面的文件之后,创建了一堆行,但是 iso 和名称字段是空的。这是我的 app/model/country.rb 文件

class Country < ActiveRecord::Base
  attr_accessor :id, :iso, :name
end

感谢您的帮助,- 戴夫

您应该完全删除 attr_accessor 行。 ActiveRecord 将根据 table 列为您定义这些方法。通过这一行,您实质上是用不接触数据库的版本覆盖了内置的 ActiveRecord 方法。