簡単な問題があります。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 はコメント テーブルの名前、body はコメント テーブル内の列の名前です。
これは、ネストされた属性がある場合に適用されます
post.rb
has_many: comments
accept_nested_attributes_for: comment
コメント.rb
belongs_to: post