你好,我想在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
答案 0 :(得分:5)
我认为重写这样一个公共ActiveRecord
API的重要方法是一个糟糕的主意。
但是,如果您确实想覆盖save
,则应允许save
方法接收与original save
method相同的参数,并将这些参数也传递给super
。
def save(*args)
# ...
Multidb.use(:default) do
super(*args)
end
# ...
end