Rails: Как избежать повторения включения одного и того же модуля в несколько моделей? - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть несколько моделей, которые включают в себя один и тот же модуль:

class MyModel1 < ActiveRecord::Base
  include MyModuleName
end

class MyModel2 < ActiveRecord::Base
  include MyModuleName
end

class MyModel3 < ActiveRecord::Base
  include MyModuleName
end

Вместо включения модуля в каждую модель, я попытался сделать следующее:

class MyNewModel < ActiveRecord::Base
  include MyModuleName
end

class MyModel1 < MyNewModel
end

class MyModel2 < MyNewModel
end

class MyModel3 < MyNewModel
end

, но это приводит к ошибке, сообщающей, что таблица my_new_models не существует.

Как правильно избежать повторения include MyModuleName?

1 Ответ

5 голосов
/ 02 февраля 2011

Чтобы заставить работать метод наследования модели, вам нужно установить self.abstract_class = true в MyNewModel:

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

class MyModel1 < MyNewModel
end

class MyModel2 < MyNewModel
end

class MyModel3 < MyNewModel
end
...