覆盖Ruby on Rails中的保存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了覆盖Ruby on Rails中的保存相关的知识,希望对你有一定的参考价值。

您好我想要覆盖ruby中的save方法但是这样做时我在保存带有一些更改的对象时会出现以下错误

    User.name = "alex"
    User.save

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

我的代码如下

class ActiveRecord::Base

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

end
答案

我认为覆盖公共ActiveRecord API的这种重要方法是一个可怕的想法。

但是如果你真的想要覆盖save那么你应该允许你的save方法接收与original save method相同的参数并将这些参数传递给super

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

以上是关于覆盖Ruby on Rails中的保存的主要内容,如果未能解决你的问题,请参考以下文章

无法保存其他表中的数据。 Ruby on Rails 5

Ruby on Rails 中的会话如何工作?

Ruby on Rails:before_save 字段为小写

Ruby-on-Rails:如何摆脱“你被重定向”页面

Ruby On Rails 中的编组与 ActiveRecord 序列化

Ruby on Rails 中的基本图像大小调整