在Rails应用程序中以DRY方式处理具有多个帐户的用户

时间:2013-08-13 02:20:30

标签: ruby activerecord devise ruby-on-rails-3.2 activemodel

这是一所学校的Rails应用程序。我正在使用Devise用户帐户。到目前为止,每个用户都有.role adminteacherstudent,这限制了用户可以在应用中访问和贡献的内容。我正在使用user.email登录。到目前为止,一切正常。

现在我意识到我的兄弟帐户存在问题。用于登录的唯一user.email实际上是父母的电子邮件地址(因为学生是未成年人),现在我必须考虑有两个或更多孩子是学生的父母。我显然不能为每个孩子设置一个student帐户并使用相同的电子邮件地址,因为它必须是唯一的(我确实希望在验证中保留这些要求)。

鉴于我已经完成了应用程序的大量工作,对于这种情况,什么是一种很好的DRY方式?

我搜索了这个网站和其他网站,但没有找到任何可以解释这种情况的内容。

我认为将User模型中的角色更改为父级,然后使用单独的Student模型。然后,具有父母角色的用户可以has_many :students,但这并不适合我。

任何一般的想法/概念都会受到赞赏,对于帮助我解决这些问题的文章或宝石的指针也是如此。

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最好的方式,但一种方法是在所有学生电子邮件地址的父母电子邮件地址的名称部分附加一个兄弟唯一标识符。你可以这样做,当你想要“真正的”电子邮件地址时它可以被剥离。根据{{​​3}},这种方法实际上有一些先例。