无法弄清楚为什么我的种子文件正在创建没有数据的行
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 方法。
我正在使用 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 方法。