Rails:如何避免在多个模型中重复包含相同的模块?

Mis*_*hko 0 ruby-on-rails dry

我有几个模型都包含相同的模块:

class MyModel1 < ActiveRecord::Base
  include MyModuleName
end

class MyModel2 < ActiveRecord::Base
  include MyModuleName
end

class MyModel3 < ActiveRecord::Base
  include MyModuleName
end
Run Code Online (Sandbox Code Playgroud)

我没有在每个模型中包含模块,而是尝试了以下方法:

class MyNewModel < ActiveRecord::Base
  include MyModuleName
end

class MyModel1 < MyNewModel
end

class MyModel2 < MyNewModel
end

class MyModel3 < MyNewModel
end
Run Code Online (Sandbox Code Playgroud)

但最终会出现一个错误,表示该my_new_models表不存在.

什么是避免重复的正确方法include MyModuleName

idl*_*ers 5

为了让模型继承技术工作,你需要设置self.abstract_class = trueMyNewModel:

class MyNewModel < ActiveRecord::Base
  self.abstract_class = true
  include MyModuleName
end

class MyModel1 < MyNewModel
end

class MyModel2 < MyNewModel
end

class MyModel3 < MyNewModel
end
Run Code Online (Sandbox Code Playgroud)