假设我想创建一个没有自我注册的模型用户。
我创建了用户模型并添加了以下行
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
在我的
routes.db
文件我跳过注册devise_for :users, skip: :registrations
当我运行
rake routes
注册路径消失。但是,只需删除
:registerable
即可获得相同的配置。来自 User 模型,而不是添加 `skip: :registrations.那么问题来了:这两种去除自注册方式的主要区别是什么?哪一个更可取?
最佳答案
如果您对用户注册不感兴趣,这两个选项都会给您相同的结果,尽管我更喜欢删除 registerable
用户模型中的模块,以避免加载它并且根本不使用它。
你可以看到devise
下一个链接中的方法,因此您可以了解通过不加载模块来避免什么:
https://github.com/plataformatec/devise/blob/master/lib/devise/models.rb#L77
另一方面,如果您对通过任何子类(例如买方或卖方,使用 STI)而不是类本身(用户)进行用户注册感兴趣,则需要 registerable
用户模型上的模块和路由上的类似模块:
devise_for :users, skip: :registrations
devise_for :buyers, only: :registrations
devise_for :sellers, only: :registrations
我希望它有所帮助。
关于ruby-on-rails - 跳过 : registration vs remove :registerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22404733/