我在每个模型中都使用了一些函数,我想将它们放在像 ActiveRecord::Base
这样的函数中,所以我不需要在所有函数中命名相同的函数我的模特
我甚至不确定这样的事情是否符合最佳做法。也许一些Rails专业人士可以向我展示更好的东西。
答案 0 :(得分:3)
编写包含所需方法的模块,并根据需要编写include MyModule
。
您当然可以像@derekerdmann建议的那样,为您的模型创建一个抽象基类:
class MyBaseModel < ActiveRecord::Base
abstract_class = true
def my_method(*args)
#code goes here
end
end
class MyModel < MyBaseModel
end
不要忘记假设abstract_class = true
行或单表继承。
就个人而言,我更喜欢mixin方法,因为如果您的模型在常用功能方面有所不同,您可以将常用功能分组到单独的模块中,并根据需要include
。
答案 1 :(得分:2)
请记住,您仍然可以在Rails中使用标准的面向对象实践。创建一个使用所有常用功能扩展ActiveRecord::Base
的类,然后为每个真正的ActiveRecord模型扩展该类。