如何从ActiveRecord实例中删除状态机。 对于前
Class X < ActiveRecord::Base
state_machine
## rest of code
end
x = X.new
x.state_machines = nil ##something like this
现在我想删除某些特定X实例的state_machine而不触及现有代码。
我们可以这样做吗? 我正在使用pluginaweek状态机。
答案 0 :(得分:0)
这种做法似乎很奇怪,因为我们认为你没有告诉我们的同样问题可以用更愉快的方式解决。但是,您可以在运行时为特定实例删除getter #state_machine
(或者如果需要,可以设置setter)。样本是:
class A
def a
end
end
a1 = A.new
a2 = A.new
a1.a # => nil
a2.a # => nil
a1.instance_eval { undef :a } # => nil
a1.a # => NoMethodError: undefined method `a' for #<A:0x80684f4>
a2.a # => nil
使用相同的方法,您可以在类的实例中重新定义任何实例方法。