【发布时间】:2011-07-01 18:32:44
【问题描述】:
我正在使用 devise,但 User 模型与旧表相关,因此可以完美运行。
现在我想实现重置密码的功能,并强制使用新字段(reset_password_token 和 reset_password_token_at),我无法在原始表上创建这些字段。
我决定使用旧的 delegate 和 has_one 关系。这是我所做的:
class User < LegacyDatabase
set_table_name 'T_CLIENTS'
devise :database_authenticatable, :authentication_keys => [:email]
devise :recoverable
has_one :user_setting
delegate :reset_password_token, :to => :user_setting
delegate :reset_password_sent_at, :to => :user_setting
# (...)
end
我现在的问题是,当我需要访问新字段时,我需要强制所有用户都创建一个 UserSetting。
如果我手动操作,我可以使用 UserSetting.find_or_create_by_user_id(...),但在沿着这条路走之前,我想知道 rails 是否提供了一种方法来完成此操作而无需退回到手动代码。
【问题讨论】:
标签: activerecord ruby-on-rails-3.1