Jaki jest najłatwiejszy sposób ustawienia wszystkich atrybutów (z wyjątkiem id, created_at, updated_at) obiektu ActiveRecord na zero?Jaki jest najprostszy sposób ustawienia wszystkich atrybutów (z wyjątkiem id, created_at, updated_at) obiektu ActiveRecord na zero?
10
A
Odpowiedz
5
Jest tablica o nazwie attribute_names
na modelu, który obejmuje wszystkie atrybuty, więc użycie odrzucić filtrować atrybuty:
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
Zobacz http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-i-attribute_names
5
Jeśli jest to jednorazowa sprawa, można zrobić to w kontrolerze:
@record.update_attributes(Hash[*@record.attributes.except('created_at','updated_at','id').map { |a| [a.first, nil] }.flatten])
2
Wiem, że odpowiedź została już udzielona. Natknąłem się na tę samą sytuację, która przyniosła kolejne rozwiązanie.
record.dup.attributes.keep_if{|k,v| !v.nil?}
Tutaj rekord jest aktywnym obiektem rekordu.
+0
To działało dla mnie i używam Rails 4.2. Jedna wkładka jest świetna. – onebree
Powiązane problemy
- 1. Eloquent sync i created_at/updated_at
- 2. Jaki jest najprostszy sposób wyczyszczenia wszystkich pseudo klas na elemencie?
- 3. jak uczynić ActiveRecord wpadać updated_at na nowego stowarzyszenia has_many
- 4. Python - jaki jest właściwy sposób kopiowania atrybutów obiektu do innego?
- 5. Skrót do wyskubywania dwóch atrybutów z obiektu ActiveRecord?
- 6. Jaki jest najprostszy sposób na usunięcie pustych NSStrings z NSArray?
- 7. Jaki jest najprostszy sposób na zbudowanie strony z rezerwacją spotkania?
- 8. ActiveRecord wybierz z wyjątkiem kolumn
- 9. Jaki jest najprostszy sposób na iterację w tablicy tablic?
- 10. Jaki jest najprostszy sposób na aktualizację schematu mnesii?
- 11. Sygnatury (updated_at, created_at) są nieważne w laravel 5
- 12. Rails 5 obiektów modelu nie pokazujących wszystkich atrybutów Devise
- 13. Najprostszy sposób na serializację prostego obiektu klasy z simplejson?
- 14. Jaki jest najprostszy sposób na uniknięcie HTML w Pythonie?
- 15. Jaki jest najprostszy sposób na stworzenie ukształtowanego okna w wxPythonie?
- 16. Jaki jest najprostszy sposób na utrzymanie map/struktur w Clojure?
- 17. Jaki jest najprostszy sposób zapisu na stdout w trybie binarnym?
- 18. Jaki jest najprostszy sposób na uzyskanie wszystkich ciągów, które nie zaczynają się od postaci?
- 19. Jaki jest najprostszy sposób scalenia wszystkich zmian poza jedną gałęzią w Git?
- 20. Najprostszy sposób na utworzenie strumienia z obiektu Java?
- 21. Jaki jest najprostszy sposób obsługi zdarzenia SelectedItem z MVVM?
- 22. Jaki jest najprostszy sposób zdefiniowania zmiennej lokalnej w Oracle?
- 23. Najprostszy sposób na usunięcie wszystkich stylów na stronie
- 24. Uzyskiwanie określonych atrybutów z modelu ActiveRecord
- 25. Najprostszy sposób rejestrowania wszystkich wiadomości z Centrum zdarzeń Azure
- 26. ANTLR Jaki jest najprostszy sposób realizacji języka Pythona?
- 27. Jaki jest najprostszy sposób wykonania klasy Java co 30 sekund?
- 28. Jaki jest najprostszy sposób na konwersję zrzutu danych SO z HTML z powrotem na Markdown?
- 29. Model szkieletu. ToJSON() nie renderuje wszystkich atrybutów do JSON
- 30. Zmiana updated_at w rekordzie Rails
Szczerze mówiąc, wydaje się, że jest to bardzo szczególny przypadek, czy można wyjaśnić, dlaczego jest to wymagane - być może, jest lepsze rozwiązanie. W międzyczasie sprawdź moją odpowiedź. – lwe
Tak, wiem, że to trochę dziwne, ale zaufaj mi, że było to konieczne. Dzięki za odpowiedź, świetnie się spisałeś. – ben
Nie ma za co :) – lwe