我有一个执行算法的模型方法,还有另一个模型,在保存之后,在某些情况下,需要刷新算法结果。
所以,我希望能够做到这样的事情:
class Model1 < ActiveRecord::Base
after_save :update_score
def update_score
if ...
...
else
# run_alg from class Model2
end
end
end
class Model2 < ActiveRecord::Base
def run_alg
...
end
end
这是可能的还是我必须将run_alg
移动/复制到application.rb?
答案 0 :(得分:2)
如果它是一个类方法,你可以只调用Model2.run_alg
,否则如果它是一个实例方法,你需要有一个Model2实例,可以像@model2_instance.run_alg
一样调用(其中@ model2_instance是Model2的实例变量。
班级方法:
class Model2 < ActiveRecord::Base
def self.run_alg
...
end
# or
class << self
def run_alg
...
end
end
end
实例方法:
class Model2 < ActiveRecord::Base
def run_alg
...
end
end
要了解有关类方法和实例方法的更多信息,请check this out。
答案 1 :(得分:2)
通过添加Model2
instance_method
中的方法更改为self.
class Model2 < ActiveRecord::Base
def self.run_alg
...
end
end
并将Model1
称为Model2.run_alg