Это общий шаблон наследования ИППП:
# app/models/business.rb
class Business < ActiveRecord::Base
has_many :programs
end
# app/models/program.rb
class Program < ActiveRecord::Base
belongs_to :business
self.inheritance_column = :type
#Defining subclasses
def self.types
%w(A B C)
end
end
# app/models/a.rb
class A < Program; end
# app/models/b.rb
class B < Program; end
# app/models/c.rb
class C < Program; end
У вас есть две таблицы: таблица businesses
и таблица programs
. Таблица программ имеет столбец type
, который соответствует типу программы, который имеет те же другие свойства, что и любой другой тип. Тогда каждый тип программы может иметь определенные атрибуты, которые есть только у него. Rails и activerecord обрабатывают это автоматически, с несколькими оговорками, которые вы можете найти в Интернете.
Это хороший способ, если ваши программы имеют много общих атрибутов, а не так хорошо, если они не имеют.
Некоторые материалы для чтения: https://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html