从 Rails 控制台执行 ruby​​ 脚本

Eas*_*per 0 ruby-on-rails rails-console

Rails 3.2
Run Code Online (Sandbox Code Playgroud)

我有一个正在运行的 Rails 应用程序,带有 Company 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 
Run Code Online (Sandbox Code Playgroud)

我有大约 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
Run Code Online (Sandbox Code Playgroud)

Max*_*nko 5

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

eval(File.read 'reset_pay_num.rb')
Run Code Online (Sandbox Code Playgroud)

会成功的。