CASE
我正在研究一个由下表组成的模型:
我正在寻找的关系是:
has_many
条评论。 has_many
评论。has_many
用户。belongs_to
公司。基本上意味着用户可以登录,引用他们的信息,例如name,last_name等......但是用户可以是一个简单的访问者,也可以是公司的员工。
例如,用户可以选择(但不是强制性的)为自己分配他们当前的公司belongs_to
。
APPROACH
我在想办法实现这个目标:
创建2个用户表,例如,一个可以是员工另一个访客。但它似乎并未涵盖您更改状态的情况,例如,如果您不想再belongs_to
公司,这种方法似乎效率低下。
或者在我的用户表"employee?", :boolean, default: false
中使用布尔列。我不知道如何处理这个问题。如何从false切换到true并将用户分配给公司,反之亦然?
问题
是否有办法通过单个用户表来处理status -visitors和employees-并动态地从一个类别切换到另一个类别?
提前致谢
答案 0 :(得分:2)
您可以通过两个步骤完成:
1.使belongs_to
关系可选:
# User model
belongs_to :company, optional: true
2.制定不同访客和员工的范围和方法:
# User model
scope :visitors, -> { where(company: nil) }
scope :employees, -> { where.not(company: nil) }
def visitor?
company_id.nil?
end
def employee?
!visitor?
end
那就是它。现在你可以这样做:
User.visitors
User.employees
User.find(id).visitor?