2013-04-26 93 views
0

我有一个Ruby on Rails应用程序(ruby 1.8.7; rails 2.3.18)。我有一个自定义的rake任务(基本上是一个ruby程序),它比较两个数组,然后将它们的差异存储在第三个数组中(arr3 = arr1 - arr2)。在应用程序中有一个用户模型。我有一个数据库脚本,用于从model/db中挂起(删除)用户。所以我想在arr3创建后从rake任务调用这个数据库脚本。我想运行这个脚本,直到arr3中的所有元素都被删除。数组给出了两个用户列表之间的区别。从rake任务调用数据库脚本

任何人都可以指导我吗?我如何从rake任务调用数据库脚本?任何事情都会有很大的帮助。

耙文件如下:

namespace :db do 
arr1 = Array.new 
arr2 = Array.new 
arr3 = Array.new 

desc "load data from csv" 
task :load_is_data do 
    require 'fastercsv' 
    CSV.foreach("C:/Sites/rails_project/demo_app/list1.csv") do |row| 
arr1 << row[0] 
    end 

CSV.foreach("C:/Sites/rails_project/demo_app/list2.csv") do |row| 
arr2 << row[0] 
    end 

    arr3 = arr1-arr2 
    puts "Inactive: #{arr3}" 

#CODE TO BE ADDED, TO CALL DATABASE-SCRIPT 

end 
end 

感谢, Bhargav

+0

也许你可以看看这个类似的问题:http://stackoverflow.com/questions/16074630/how-can-i-remove-a-column-from-table-using-rails-console – 2013-04-26 07:14:12

+0

我不想从数据库中删除整列。只想通过使用db脚本删除一些条目。 – bhargav 2013-04-26 07:42:27

+0

为什么你需要调用数据库脚本?你没有使用ActiveRecord? – Yule 2013-04-26 09:07:54

回答

0

您可以使用下面的宝石任何。

gem "populator", "~> 1.0.0" 
gem 'faker' 
gem "random_data", "~> 1.6.0" 

代码将是这样的。

admin = AdminUser.create :email => '[email protected]', :password => 'xxxx1234', :password_confirmation => 'xxxx1234', :role => 'SuperAdmin', :name => 'SuperAdmin' 
    puts 'SuperAdmin created: ' << admin.email 



     10.times do |index| 
     User.create! :fname => Random.firstname, 
      :lname => Random.lastname, 
      :email => Random.email, 
      :password => 'dcs1234', 
      :password_confirmation => 'dcs1234' 
     end 
+0

嗨普拉文, 对不起。我无法理解你的soln。我的意思是这些宝石会做什么?另外为什么我需要创建一个超级用户或superadmin?有线程/链接,我可以更好地理解你的概念吗?我基本上想知道如何从rake任务调用数据库脚本(现有),以便它可以遍历数组的元素并执行所需的操作。 谢谢 – bhargav 2013-04-26 09:06:53