self.save! produces an argument error #<ArgumentError: wrong number of arguments (0 for 2)>
self.save! produces an argument error #<ArgumentError: wrong number of arguments (0 for 2)>
我正在用以下代码覆盖 Devise 的 valid_password 函数:
def valid_password?(password)
if legacy_password?
return false unless Devise.secure_compare(self.encrypted_password,
legacy_password(password, self.encrypted_password))
attributes = { password: password,
password_confirmation: password,
legacy_password: false }
save!
end
super password
end
我的跟踪显示一切都已正确设置(新的 encrypted_password)但是当进程到达保存时!它 returns #<ArgumentError: wrong number of arguments (0 for 2)>
帮助感谢!
更新:
当我浏览这些字段时,密码和 password_confirmation 似乎设置正确,但 legacy_password 是返回错误的原因。此外,当我在控制台中输入 User.legacy_password 时,我得到了同样的错误。这是数据库的问题吗?
我最近添加了 legacy_password 作为迁移。
class AddLegacyPasswordToSpreeUsers < ActiveRecord::Migration
def up
add_column :spree_users, :legacy_password, :boolean
end
def down
remove_column :spree_users, :legacy_password
end
结束
原来我有一个同名的方法 (legacy_password)。当我尝试更新属性时,它正在调用方法(需要 2 个参数)并返回上述错误。
我正在用以下代码覆盖 Devise 的 valid_password 函数:
def valid_password?(password)
if legacy_password?
return false unless Devise.secure_compare(self.encrypted_password,
legacy_password(password, self.encrypted_password))
attributes = { password: password,
password_confirmation: password,
legacy_password: false }
save!
end
super password
end
我的跟踪显示一切都已正确设置(新的 encrypted_password)但是当进程到达保存时!它 returns #<ArgumentError: wrong number of arguments (0 for 2)>
帮助感谢!
更新:
当我浏览这些字段时,密码和 password_confirmation 似乎设置正确,但 legacy_password 是返回错误的原因。此外,当我在控制台中输入 User.legacy_password 时,我得到了同样的错误。这是数据库的问题吗?
我最近添加了 legacy_password 作为迁移。
class AddLegacyPasswordToSpreeUsers < ActiveRecord::Migration
def up
add_column :spree_users, :legacy_password, :boolean
end
def down
remove_column :spree_users, :legacy_password
end
结束
原来我有一个同名的方法 (legacy_password)。当我尝试更新属性时,它正在调用方法(需要 2 个参数)并返回上述错误。