我在seeds.rb中有一些数据,我想填充到表中。在seeds.rb文件里面,我正在使用create!方法,以便在出现问题时我收到错误消息。但是当我输入rake db:seed
时,我没有得到任何确认说“数据加载成功”之类的内容。我的意思是,我必须去rails db,然后再次检查表。这很好,但我想知道是否有办法为rake db:seed添加成功消息。
答案 0 :(得分:0)
编辑你的db / seed.rb,在底部添加以下内容
puts "data loaded success"
答案 1 :(得分:0)
是的,您可以在底部添加一个看跌期权,就像@richfisher所说的那样。
这与您的要求不完全相同,但是我通常想知道运行种子时正在创建什么。但是我希望种子文件是幂等的,因此我可以运行它,添加一些新内容,然后再次运行它,仅添加新记录。这导致围绕是否打印某些内容的许多条件。
我最终在种子文件中创建了一个执行find_or_create_by!
的函数,然后检查该对象是否是新创建的(created_at
不到几秒钟)。如果是新的,我会留言:
def seed(model, attrs, message = nil)
model.public_send(:find_or_create_by!, attrs).tap do |instance|
log_created(instance, message)
end
end
def log_created(instance, message = nil)
return if instance.created_at < 2.seconds.ago
message = message || instance&.name || instance.to_param
puts "Created #{instance.class.name.downcase} - #{message}"
end
# then I use like this:
acme = seed(Project, name: "Acme App")
# it will print out name or `to_param` by default
# if I want to use a custom message:
widget = seed(Widget, { foo: "bar" }, "custom message")
这样,当我运行db:seed
时,要么得到有关已创建记录的输出,要么没有输出,这意味着什么也没有创建。