【发布时间】:2016-05-18 05:03:26
【问题描述】:
我做了一个小db/seeds.rb文件:
web = Website.find_or_create_by(id: 1) do |w|
w.website = "http://example.dev/"
w.banner_msg = "Hey! Banner message!"
w.signup_msg = "Wahey! Sign up message!"
w.bg_col = "#333"
w.txt_col = "#EEE"
w.btn_col = "#999"
end
pub = Publisher.find_or_create_by(id: 1) do |p|
p.phone = "021 111 1111"
p.website = web
end
User.find_or_create_by(id: 1) do |u|
u.email = 'email@email.com'
u.password = 'password'
u.first_name = 'Joe'
u.last_name = 'Bob'
u.publisher = pub
end
User.create(id: 5, email: "hello@ds.dfs")
当我运行rake db:seed 时,终端简单地接受命令并显示一个新行,没有错误消息,没有“rake abort!”,什么都没有。
当我检查 Rails 控制台中的字段时,那里什么都没有。发生了什么事?
【问题讨论】:
-
相信你是在生产环境中做的吧?在这种情况下尝试
RAILS_ENV=production rake db:seed。 -
@arogachev 在生产环境中运行
rake db:seed有点危险,为什么有人想用假数据植入生产数据库?但是您的方法可能会奏效,尽管使用RAILS_ENV=development更好,但有任何消息@Mirror318 吗? -
@Mirror318 也可以尝试添加
puts "Users created: #{User.all.count}"以查看它是否正常工作并在运行 rake 命令时实际创建用户。 -
@bntzio 这取决于。在某些情况下,种子可能包含非假的初始数据。但是对于这个具体的问题,你是对的。
-
@arogachev 你说得对,环境很重要,但我在开发中运行所有东西,而不是在生产中。 @bntzio 我在
rails c中输入User.all以检查是否发生了任何事情。您的建议可行,但我想我的抱怨是应该出现错误消息,而无需像那样手动设置。
标签: ruby-on-rails ruby-on-rails-4 seeding