假设我想创建一个没有自行注册的模型用户。 我创建了用户模型并添加了以下行
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
在我的routes.db
文件中,我跳过了注册
devise_for :users, skip: :registrations
当我运行rake routes
注册路径消失时。
但是,我可以从User模型中删除:registerable
而不是添加`skip :: registrations来获得相同的配置。
所以问题是:删除自我注册的两种方式之间的主要区别是什么?哪个更优选?
答案 0 :(得分:8)
如果您对用户注册不感兴趣,两个选项都会给您相同的结果,但我更喜欢从用户模型中删除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
我希望它有所帮助。
答案 1 :(得分:1)
想要删除注册路线可能还有其他原因 - 例如。制作指向Devise控制器的路线。
如果您确实要禁用网站注册,请从用户模型中删除:registerable
。