411 votes

Update_attributes de rails sans sauvegarder ?

Y a-t-il une alternative à update_attributes qui ne sauve pas le dossier ?

Si je pouvais faire quelque chose comme :

BTW, je sais que je peux `` , mais je tiens à mettre à jour sur une ligne.

638voto

Ajedi32 Points 5367

Je crois que ce que vous cherchez est `` .

C’est fondamentalement le même qu’update_attributes, mais il n’enregistre pas l’enregistrement :

200voto

Yarin Points 18186

Vous pouvez utiliser assign_attributes ou attributes= (elles sont identiques)

Méthodes de mise à jour feuille de triche (pour les Rails 4):

  • update_attributes = assign_attributes + save
  • attributes= = alias assign_attributes
  • update = alias update_attributes

Source:
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/persistence.rb
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/attribute_assignment.rb

66voto

bruno077 Points 3991

EDIT: j'Ai, vous pouvez utiliser les attributs "" la méthode:

@car.attributes = {:model => 'Sierra', :years => '1990', :looks => 'Sexy'}

Source: http://api.rubyonrails.org/classes/ActiveRecord/Base.html

attributs=(new_attributes, guard_protected_attributes = true) Vous permet de définir tous les attributs à la fois par le passage dans une table de hachage avec des touches de correspondance les noms d'attribut (qui correspond au nom de colonne).

Si guard_protected_attributes est vrai (valeur par défaut), puis sensibles attributs peuvent être protégés contre cette forme de la masse-affectation à l'aide de la attr_protected macro. Ou bien vous pouvez aussi spécifier les attributs peuvent être obtenus avec l'attr_accessible macro. Alors tous les attributs non inclus dans le qui ne seront pas autorisés à être de masse attribuée.

class User < ActiveRecord::Base
  attr_protected :is_admin
end

user = User.new
user.attributes = { :username => 'Phusion', :is_admin => true }
user.username   # => "Phusion"
user.is_admin?  # => false

user.send(:attributes=, { :username => 'Phusion', :is_admin => true }, false)
user.is_admin?  # => true

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X