从 Rails 控制台执行 ruby 脚本

Executing a ruby script from the Rails console

Rails 3.2

我有一个 运行 rails 应用程序,带有公司 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

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

eval(File.read 'reset_pay_num.rb')

会成功的。

我认为您需要为此创建一个 rake-task。