最近我发现自己在Rails控制台中做了很多这样的事情:
Image.delete_all && Pencil.delete_all && Glass.delete_all && Price.delete_all
这样做的正确方法是什么?假设我想在该删除链中添加一个新模型,每次我想要重新输入这个模型都是不舒服的。
答案 0 :(得分:1)
您可以在custom rake task中对此类功能进行分组,或者对于您可以将其放入实用程序库的简单任务进行分组:
# lib/my_utils.rb
module Utils
def self.delete_models(more_models = [])
model_classes = [Image, Pencil, Glass, Price] | more_models
model_classes.each do |klass|
puts "Deleting all #{klass}"
klass.delete_all
end
end
end
然后在你的控制台中只需要并使用它:
irb> require 'my_utils'
irb> Utils.delete_models # delete default models
irb> Utils.delete_models User # pass an extra model to delete
您可能需要重复做的其他事情,您可以将其放入您的Utils模块并从控制台使用它。
答案 1 :(得分:1)
我会创建一个可以从命令行运行的rake任务
<强> LIB /任务/ util.rake 强>
namespace :util do
desc "Deletes records from common models"
task delete_all: :environment do
%w[Image Pencil Glass Price].map { |k| k.constantize.send(:delete_all) }
end
end
您可以通过运行rails g task util:delete_all