ruby-on-rails - tutorial - ruby on rails website




Überprüfungsprobleme bei der manuellen Aktualisierung des Attributwerts in der Rails-Konsole (3)

Sie können update_attribute(:roles_mask, 3) oder update_column(:roles_mask, 3) versuchen.

Ich habe ein einfaches Problem. Ich möchte einen User.find(1) für meinen User.find(1) in der Rails-Konsole ändern.

Ich habe es versucht:

u = User.find(1)
u.update_attributes(roles_mask: 3)

Und wurde false zurückgegeben. Wenn ich u.errors.full_messages überprüfe, u.errors.full_messages ich, dass es ein Problem mit der Passwortüberprüfung von has_secure_password . Wie kann ich es manuell in der Konsole aktualisieren?


Sie können so etwas haben

Post.find(1).comments.first.update(body: "hello")

oder

@u = Post.find(1)
@u.comments.first.update(body: "hello")

Wenn Kommentare der Name der Kommentartabelle ist, steht der Name der Spalte in der Kommentartabelle.

Dies gilt, wenn Sie ein verschachteltes Attribut haben

post.rb

has_many: comments
accept_nested_attributes_for: comment

comment.rb

belongs_to: post

Wenn Sie die Validierung umgehen möchten, verwenden Sie

# skip validations but run callbacks
u.update_attribute :roles_mask, 3

oder

# do the update on the sql so no validation and callback is executed
u.update_column :roles_mask, 3




ruby-on-rails