【问题标题】:How to delete an attribute from a Devise user in Rails?如何在 Rails 中删除 Devise 用户的属性?
【发布时间】:2014-12-01 04:36:53
【问题描述】:

我有一个与默认不同的设计模型。它有额外的属性。

例如,我的设计用户有一个电子邮件、密码和一个职业。我想写一行代码来删除当前登录用户的职业。我喜欢想象它看起来像这样

current_user.career.delete

这将理想地从数据库中清空职业,这样current_user.career 将返回nil,直到用户再次更新以添加职业。

我该怎么做?

【问题讨论】:

  • 这应该已经可以了,这是一个有效的语法
  • 嗯,我还没有在 github 上找到设计文档。但是,当我尝试运行此代码时,我收到错误 wrong number of arguments (0 for 1+)
  • 您能否将职业和用户模型之间的关系添加到问题中
  • 还要确保 current_user.career 可以正常工作
  • puts current_user.career 按预期输出。我使用强参数和消毒剂将career 添加到设计用户模型中

标签: ruby-on-rails activerecord devise


【解决方案1】:

delete 方法将 id 或 id 数组作为参数,因此您可以简单地使用

current_user.career = nil
current_user.save

或者您可以通过创建迁移将职业设置为零,请参阅question

change_column :users, :career, :string, :default => nil

请参阅documentation 了解更多信息。

【讨论】:

  • 其实这行不通,因为它只是改变了current_user.career的值,并没有真正从数据库中删除信息。
  • 我也不认为我可以使用 change_column,因为我想将其作为更大脚本的一部分而不是单独迁移。
猜你喜欢
  • 2016-01-23
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
相关资源
最近更新 更多