我有一个项目有几个模型,如学生,工人,管理员...... 当然,那些人在网站上获得了不同的权利。所以我想知道:
我应该从不同的视图中记录它们吗?那么这些带有表格的观点中的每一个都会在当时处理一个(已知的)模型,或者同样容易将它们中的三个放在一起?。
我尝试制作一个视图,但我遇到的第一个问题是识别登录的用户类型,因此知道接下来要显示的视图是个问题...
答案 0 :(得分:1)
Rails背后的基本理念之一就是干 - 不要重复自己。遵循这一理念,拥有三个独立的登录屏幕似乎相当多余。
同样地,让学生,工人和管理员在不同的模型中看起来有点不切实际。所有用户(可能)都会有姓名,电子邮件和密码以及其他信息。我只有一个模型,并将该模型称为它是什么样的 - User
。然后,我可以像这样设置用户组:
class User < ActiveRecord::Base
belongs_to :user_group
end
class UserGroup < ActiveRecord::Base
has_many :users
end
User.first.user_group # => <UserGroup name: 'Students'>
User.find(123).user_group # => <UserGroup name: 'Workers'>
UserGroup.find_by_name('Administrators').users # => [<User ...>, <User ...>, ...]
突然,登录不再是问题。用户被认证为用户,应用程序将立即知道他们属于哪个用户组,并可以通过该方式显示相应的信息。
另外,如果我没有向Devise发出呐喊,我会感到不舒服。它是处理身份验证的宝石,如果您正在考虑自己创建身份验证方法,那肯定会为您节省大量的工作和精力。