我有一个简单的问题。我想为我User.find(1)
的 in rails 控制台更改一些字段值。
我试过:
u = User.find(1)
u.update_attributes(roles_mask: 3)
并被false
退回。当我检查时u.errors.full_messages
,我发现这是因为来自 的密码验证存在问题has_secure_password
。如何在控制台中手动更新它?
我有一个简单的问题。我想为我User.find(1)
的 in rails 控制台更改一些字段值。
我试过:
u = User.find(1)
u.update_attributes(roles_mask: 3)
并被false
退回。当我检查时u.errors.full_messages
,我发现这是因为来自 的密码验证存在问题has_secure_password
。如何在控制台中手动更新它?
如果要绕过验证,请使用
# 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
您必须先对用户进行身份验证,然后才能更新用户,看看这里
u = User.find(1)
u.authenticate("password")
u.update_attributes(roles_mask: 3)
或者,如果您想跳过验证,您可以执行以下操作;
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 是comment 表的名称,body 是comment 表中列的名称。
这适用于嵌套属性
post.rb
has_many: comments
accept_nested_attributes_for: comment
comment.rb
belongs_to: post