我在Rails中有一个应用程序,其中创建了一个名为User的模型和另一个名为Task的模型。
模型用户的角色有enum
,这意味着我可以拥有一个作为客户端或开发人员的用户:
require 'bcrypt'
class User < ApplicationRecord
has_many :tasks
enum :role => [
:client,
:developer
]
has_secure_password
validates_uniqueness_of :document, :email
validates_presence_of :birthdate,
:credits,
:document,
:email,
:name,
:neighborhood,
:phone,
:street,
:street_number,
:zipcode
end
任务模型可以由客户端或开发者管理:
class Task < ApplicationRecord
enum :priority => [
:low,
:medium,
:high
]
validates_presence_of :description, :title
end
我敢肯定,如果将表User拆分为另外两个表,例如Client和Developer,那会更好,但是它们的属性是相同的,将来,我希望能够快速将角色:client
的用户更改为角色:developer
,而不必在表Developer中创建记录并销毁表Client中的另一个记录。
我的问题是:考虑良好实践,是否最好在Task模型中插入两个字段,一个称为client_id
,另一个称为developer_id
,并使用Single-table inheritance或在模型Task和模型User之间创建一个many-to-many relationship,仅检查Task中引用的每个用户的角色?