从Rails控制台执行ruby脚本

时间:2016-08-31 05:59:53

标签: ruby-on-rails rails-console

Rails 3.2

我有一个运行轨道应用程序,带有公司MVC。

在models / company.rb中,我有以下方法:

def save_company_pay_num
  return false unless self.valid?
  create_company_pay_num if self.company_pay_num.blank?
  res = save_check_company_pay_num
  unless res[0]
    errors.add(:set_company_pay_num, res[1].try{|r| r.split(':')[1].strip.capitalize})
    return false
  end
  true
end 

我有大约1,000家公司需要重新发放他们的工资号。

有没有办法从rails控制台(rails c)执行文件,例如:

reset_pay_num.rb

company_ids=[
  '1',
  '2',
  '3',
  ...
]

company_ids.each do |c|
  company = Company.find(c)
  company.save_company_pay_num
end

2 个答案:

答案 0 :(得分:4)

我不知道这种行为的原因是什么,因为至少你可以把你的脚本作为一个方法放在rails所需的某个文件中但是:

eval(File.read 'reset_pay_num.rb')

会做到这一点。

答案 1 :(得分:0)

我认为你需要为这些目的创建一个rake-task。