Ruby on rails 跳过:注册与删除:可注册

Ruby on rails 跳过:注册与删除:可注册,ruby-on-rails,devise,Ruby On Rails,Devise,假设我想创建一个没有自注册的模型用户。 我已经创建了用户模型并添加了以下行 devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 在我的routes.db文件中,我跳过了注册 devise_for :users, skip: :registrations 当我运行rake路由时注册路径消失 但是,我只需从用户模型中删除:regist

假设我想创建一个没有自注册的模型用户。 我已经创建了用户模型并添加了以下行

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
在我的
routes.db
文件中,我跳过了注册

devise_for :users, skip: :registrations
当我运行
rake路由时
注册路径消失

但是,我只需从用户模型中删除
:registerable
,而不是添加'skip::registrations',就可以获得相同的配置


那么问题是:这两种取消自我注册的方式之间的主要区别是什么?哪个更可取

如果您对用户注册不感兴趣,这两个选项都会给您相同的结果,尽管我更喜欢从用户模型中删除
可注册的
模块,以避免加载它,而不使用它

您可以在下一个链接中看到
design
方法,这样您就可以通过不加载模块来了解您在避免什么:

另一方面,如果您对通过任何子类(如买方或卖方,使用STI)而不是类本身(用户)进行用户注册感兴趣,则需要用户模型上的
可注册的
模块以及routes上的类似模块:

devise_for :users, skip: :registrations
devise_for :buyers, only: :registrations
devise_for :sellers, only: :registrations

我希望这会有所帮助。

想要删除注册路由可能还有其他原因-例如,创建指向Desive控制器的自己的路由


如果您确实想禁用站点注册,请从您的用户模型中删除
:registerable

谢谢!!!例如,如果我不希望用户能够注册自己,那么最好的选择就是删除
registerable
模块。