Was ist der einfachste Weg, um alle Attribute (außer id, created_at, updated_at) eines ActiveRecord-Objekts auf nil zu setzen?
Antworten
Zu viele Anzeigen?Es gibt ein Array namens attribute_names
im Modell, das alle Attribute enthält, also verwenden Sie reject, um die Attribute zu filtern:
class Model < AR::Base
def nilify_attributes!(except = nil)
except ||= %w{id created_at updated_at}
attribute_names.reject { |attr| except.include?(attr) }.each { |attr| self[attr] = nil }
end
end
Siehe http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-i-attribute_names
Brian Deterling
Punkte
13329
Deepak A
Punkte
322
himanshu rai
Punkte
26
1 Stimmen
Ehrlich gesagt scheint dies ein sehr spezieller Fall zu sein, könntest du ein wenig erklären, weshalb dies erforderlich ist - vielleicht gibt es eine bessere Lösung. In der Zwischenzeit schau dir meine Antwort an.
0 Stimmen
Ja, ich weiß, es ist ein bisschen seltsam, aber vertrau mir, es war notwendig. Danke für deine Antwort, hat super funktioniert.