将时间列添加到 Devise 并在 Rails 4 中从控制器手动更新它

Add a Time column to Devise and have it updated manually from controller in Rails 4

我需要查看用户何时开始订阅。我需要在 Devise 生成的迁移创建的 users table 中添加一个名为 subscription_started_time 的新列。

我可以轻松添加该列,但如何填充它?我显然不应该使用强参数,因为时间输入将直接从控制器添加,而不是通过表单。

当用户 creates/updates 一个帐户时,处理直接来自 Ruby 的输入的最佳方式是什么?

如果您想在创建 User:subscription_started_time 时设置它,您可以使用 ActiveRecord 的挂钩之一 - before_create

让我们考虑一个例子:

class User < ActiveRecord::Base
  # ...

  before_create do
    self.subscription_started_time = DateTime.new
  end
end

请检查 documentation 以获得更多适用于您的 ActiveRecord 型号的挂钩。

希望对您有所帮助!