У меня есть несколько моделей, которые можно комментировать (статья, пост и т. Д.).В настоящий момент каждая комментируемая модель содержит следующую ассоциацию
has_many :comments, :as => :commentable
, а модель комментария содержит:
belongs_to :commentable, :polymorphic => true
Моя разделяемая комментируемая модельнекоторые сходные характеристики, и я бы хотел, чтобы они могли использовать несколько одинаковых функций.Тем не менее, я думаю, что MTI (наследование нескольких таблиц) может быть излишним для этой ситуации.Возможно / приемлемо ли для меня просто создать базовый класс модели, который они оба наследуют?т.е.:
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end
class Commentable < ActiveRecord::Base
has_many :comments, :as => :commentable
validates_presence_of :body
def some_function
...
end
end
class Article < Commentable
...
end
class Post < Commentable
...
end