ruby-on-rails - 跳过 : registration vs remove :registerable

标签 ruby-on-rails devise

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

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/

相关文章:

ruby-on-rails-4 - 将数据添加到 Devise session

ruby-on-rails - 移动浏览器关闭时保持用户登录(Rails)

ruby-on-rails - rails : Securing route to customer to prevent unauthorized access

ruby-on-rails - rails 3 : Get current view's path helper?

ruby-on-rails - 当窗口大小改变大小时,Mailchimp 如何设法将框移动到另一个框下方(css3/媒体查询)

sql - Rails 左连接有条件

devise - 如何使用 Devise 将用户名列入黑名单?

ruby-on-rails - 使用first_or_create检索对象时在对象上创建注释的问题

javascript - Rails link_to 与 onclick to google analytics 事件

javascript - Backbone 中的类方法