Rails控制台中手动更新属性值的validation问题
我有一个简单的问题。 我想在rails控制台中为我的User.find(1)
更改一些字段值。
我试过了:
u = User.find(1) u.update_attributes(roles_mask: 3)
并得到false
回报。 当我检查u.errors.full_messages
,我发现这是因为has_secure_password
密码validation存在问题。 如何在控制台中手动更新?
如果你想绕过validation,使用
# skip validations but run callbacks u.update_attribute :roles_mask, 3
要么
# do the update on the sql so no validation and callback is executed u.update_column :roles_mask, 3
你必须先authentication用户,然后你可以更新用户在这里看看
u = User.find(1) u.authenticate("password") u.update_attributes(roles_mask: 3)
或者,如果您想跳过validation,您可以按照以下步骤进行操作;
u = User.find(1) u.update_attribute :roles_mask, 3
你可以尝试update_attribute(:roles_mask, 3)
或update_column(:roles_mask, 3)
。
你可以有这样的事情
Post.find(1).comments.first.update(body: "hello")
要么
@u = Post.find(1) @u.comments.first.update(body: "hello")
其中comments是注释表的名称,body是注释表中的列的名称。
这适用于具有嵌套属性的情况
post.rb
has_many: comments accept_nested_attributes_for: comment
comment.rb
belongs_to: post