ActiveRecord:禁用某些方法,如“保存”或将其设为私有

时间:2013-10-07 07:59:26

标签: ruby-on-rails activerecord private

在Rails中,我使用了许多具有自定义方法的模型,例如create_new!,它们取代了内置方法(通常用于包装其他功能,而不必使用过滤器,我试图避免使用过滤器)。 / p>

因此,我想禁用(或更优雅地,私有化)某些方法,例如createsave。是否有可能将某些方法设为私有而没有任何令人讨厌的副作用?

1 个答案:

答案 0 :(得分:0)

您可以使用alias_method函数重命名要混淆的方法,然后重新定义该方法以抛出错误或异常。例如,

alias_method :save_private, :save

def save(*)
  ActiveSupport::Deprecation.warn("Method is deprecated and disabled, please use save_new")
  false
end