禁用模型中的acts_as_x等函数

时间:2015-12-28 10:53:20

标签: ruby-on-rails ruby-on-rails-4 rubygems rails-engines

基本上我使用的是某些引擎,其模型类使用了一些像acts_as_x这样的宝石。要覆盖模型,我使用class_eval,但我不需要acts_as_x功能,因为它会进行繁重的计算,而我并不需要。

无论如何都要禁用此功能?

谢谢,

更新:

# origin model
class Model < ActiveRecord::Base
 acts_as_x
end

# overriding model
Model.class_eval do 
  acts_as_y
  # it musts remove acts_as_x
end

2 个答案:

答案 0 :(得分:0)

如果你不想使用某些东西。不要求它。 或者remove_method,http://ruby-doc.org/core-2.3.0/Module.html#method-i-remove_method

答案 1 :(得分:0)

class Roman
  def roman_to_int(str)
    # ...
  end
  def method_missing(methId)
    str = methId.id2name
    roman_to_int(str)
  end
end
r = Roman.new
r.iv      #=> 4
r.xxiii   #=> 23
r.mm      #=> 2000

在ruby doc中,当r的实例找不到方法时。 它将调用method_missing和输入名称。 处理您的方法,然后指定要执行的方法。 如果您使用ActiveRecord,find_by_xxx是method_missing。