我有一个简单的问题。我想在rails控制台中为User.find(1)
更改一些字段值。
我试过了:
u = User.find(1)
u.update_attributes(roles_mask: 3)
返回了false
。当我检查u.errors.full_messages
时,我发现这是因为has_secure_password
的密码验证存在问题。如何在控制台中手动更新?
答案 0 :(得分:71)
如果您想绕过验证,请使用
# 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
答案 1 :(得分:11)
您必须先对用户进行身份验证,然后才能更新用户外观here
u = User.find(1)
u.authenticate("password")
u.update_attributes(roles_mask: 3)
或者,如果您想跳过验证,可按以下步骤操作;
u = User.find(1)
u.update_attribute :roles_mask, 3
答案 2 :(得分:5)
您可以尝试update_attribute(:roles_mask, 3)
或update_column(:roles_mask, 3)
。
答案 3 :(得分: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