Это называется Одиночная таблица Наследование по причине: Все данных хранятся в одной таблице.
При записи class Individual < User
, вы храните данные этой модели в таблице users
.
Единственная отличительная особенность этих записей заключается в том, что individual.type == 'Individual'
.
Таблицы individuals
и businesses
в вашем текущем дизайне никогда не используется .
Теперь, с учетом сказанного, вот как я бы это изменил:
class User < ApplicationRecord
# This is the user model
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:confirmable, :lockable, :timeoutable
enum status: {unverified: 0, verified: 1}
end
# app/models/individual.rb
class Individual < User
end
# app/models/business.rb
class Business < User
has_one :business_attributes
end
# app/models/business_attributes.rb
class BusinessAttributes < ApplicationRecord
belongs_to :business
end
# db/schema.rb
ActiveRecord::Schema.define(version: 2018_06_09_091056) do
create_table "business_attributes", force: :cascade do |t|
t.string "company_address"
t.string "company_name"
t.string "company_phone_number"
t.text "documents"
end
create_table "users", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.integer "status", default: 0
t.string "date_of_birth"
t.text "passport"
t.string "country"
t.string "personal_address"
t.text "recovery_photo"
t.string "type"
t.string "email", default: "", null: false
# etc..
end
end