Rails STI for User模型,具有关联和身份验证

时间:2012-02-12 06:52:22

标签: ruby-on-rails activerecord single-table-inheritance

我正在开发一个医生可以管理患者,约会等的网站。 医生可以有多名助手帮助他们完成这些活动,助理可以属于多位医生。

医生和助理都应该能够使用相同的登录表格登录,但由于显而易见的原因,他们根据自己的角色拥有不同的权限和关联,例如患者与医生相关联,而不是与助理相关联。

您如何建议最好的方法来解决这个问题?我正在考虑CanCan的授权部分,也许是STI的用户模型,Doctor和Assistant可以从认证部分继承,但是STI可以处理这两者之间的HABTM,以及每个模型可能具有的其他关联吗?

提前多多感谢

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题。

请确保使用'type'来设置用户。然后,您可以使用以下内容:

current_user.is_doctor?

确定对区域的访问权。

module User

  def is_doctor?
   true if self.type == Doctor
  end

  def is_assistant?
   true if self.type == Assistant
  end
end


module Doctor < User
  has_and_belongs_to_many :assistants, :through => "assistant_assignments"
end


module Assistant < User
  has_and_belongs_to_many :doctors, :through => "assistant_assignments"
end

如果您需要更多信息,请大喊。