覆盖Ruby on Rails中的保存

时间:2018-09-10 09:07:15

标签: ruby-on-rails ruby activerecord save override

你好,我想在ruby中覆盖保存方法,但是这样做 保存对象并进行一些更改时出现以下错误

    User.name = "alex"
    User.save

ArgumentError:参数数量错误(1代表0)

我的代码如下

class ActiveRecord::Base

  def save()
      p "in My save\n"
      Multidb.use(:default) do
          p "calling super\n"
      super()
      end
      p "saved\n"
  end

end

1 个答案:

答案 0 :(得分:5)

我认为重写这样一个公共ActiveRecord API的重要方法是一个糟糕的主意。

但是,如果您确实想覆盖save,则应允许save方法接收与original save method相同的参数,并将这些参数也传递给super

def save(*args)
  # ...
  Multidb.use(:default) do
    super(*args)
  end
  # ...
end