Rails:在单个表继承中使用Devise
|
我在使Devise以单表继承的方式工作时遇到问题。
我有两种不同类型的帐户,其组织如下:
class Account < ActiveRecord::Base
devise :database_authenticatable, :registerable
end
class User < Account
end
class Company < Account
end
我有以下路线:
devise_for :account, :user, :company
用户在/user/sign_up
注册,公司在/company/sign_up
注册。所有用户都以form4ѭ(Account
是父类)的单一表单登录。
但是,通过这种形式登录似乎只能对“ 5”作用域进行身份验证。随后对诸如“ 7”或“ 8”之类的动作的请求将用户引导至相应范围的登录屏幕。
如何让Devise识别帐户“类型”并针对相关范围进行身份验证?
任何建议,不胜感激。
没有找到相关结果
已邀请:
4 个回复
babsoft
在app / controllers / sessions_controller.rb中:
注意:由于您的Accounts类仍然是:registerable的,因此会尝试发出views / devise / shared / _links.erb中的默认链接,但是new_registration_path(Accounts)将不起作用(我们在路线图中跳过)并导致错误。您将必须生成设计视图并手动将其删除。 提示https://groups.google.com/forum/?fromgroups=#!topic/plataformatec-devise/s4Gg3BjhG0E,以向我指出正确的方向。
联海
一个经常被忽略的方法是,您可以在routes.rb文件中的经过身份验证的方法中指定一个块:
要获取各种帮助程序方法,例如\“ current_user \”和\“ authenticate_user!\”(已经定义了\“ current_account \”和\“ authenticate_account!\”),而不必为每个方法定义单独的方法(此方法很快变得难以维护)随着添加更多用户类型),您可以在ApplicationController中定义动态帮助器方法:
这就是我解决导轨设计STI问题的方法。
盛梯獭八搽
羔磺