在Rails控制台中手动更新属性值的验证问题

Mar*_*iwa 44 ruby-on-rails

我有一个简单的问题.我想User.find(1)在rails控制台中更改一些字段值.

我试过了:

u = User.find(1)
u.update_attributes(roles_mask: 3)
Run Code Online (Sandbox Code Playgroud)

并得到了false回报.当我检查时u.errors.full_messages,我发现这是因为密码验证存在问题has_secure_password.如何在控制台中手动更新?

jvn*_*ill 72

如果您想绕过验证,请使用

# skip validations but run callbacks
u.update_attribute :roles_mask, 3
Run Code Online (Sandbox Code Playgroud)

要么

# do the update on the sql so no validation and callback is executed
u.update_column :roles_mask, 3
Run Code Online (Sandbox Code Playgroud)


Muh*_*ais 11

您必须首先验证用户,然后您可以更新用户看看这里

u = User.find(1)
u.authenticate("password")
u.update_attributes(roles_mask: 3)
Run Code Online (Sandbox Code Playgroud)

或者,如果您想跳过验证,可以按照以下步骤操作;

u = User.find(1)
u.update_attribute :roles_mask, 3
Run Code Online (Sandbox Code Playgroud)


ale*_*nis 5

你可以尝试update_attribute(:roles_mask, 3)update_column(:roles_mask, 3).