Mam formularz z zagnieżdżonymi atrybutami. Teraz w moim oświadczeniu :reject_if =>
chciałbym sprawdzić atrybut w modelu zagnieżdżonym, powiedzmy first_record?
Czy istnieje sposób dostępu do takiej metody? Wydaje mi się, że możesz uzyskać dostęp tylko do przesłanego atrybutu atrybutu, aby sprawdzić, czy pole jest puste, na przykład. Dzięki!szyny accepts_nested_attributes i: reject_if
Odpowiedz
Według docs http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
Alternatywnie: reject_if akceptuje również symbol za pomocą metod:
class Member < ActiveRecord::Base
has_many :posts
accepts_nested_attributes_for :posts, :reject_if => :new_record?
end
class Member < ActiveRecord::Base
has_many :posts
accepts_nested_attributes_for :posts, :reject_if => :reject_posts
def reject_posts(attributed)
attributed['title'].blank?
end
end
ten powinien pracować dla Ciebie. Zasadniczo oznacza to, że w funkcji niestandardowej możesz zrobić wszystko, co chcesz.
Tak, ale wywoływana metoda znajduje się w modelu członkowskim. Chciałbym wywołać metodę na budowanym obiekcie zagnieżdżonym. Na przykład chciałbym powiedzieć "accepts_nested_attributes_for: posts,: reject_if => post.first_record?" Zakładając, że 'Post' ma metodę' first_record? '. Nie jestem pewien, czy obiekt będący w trakcie kompilacji jest dostępny w ten sposób, czy też ': reject_if =>' jest wywoływana przed faktycznym budowaniem obiektu ...? – Kasper
Cóż, rozwiązałem problem w inny sposób. Ale nadal jestem ciekawy, czy obiekt zagnieżdżony jest dostępny dla ': reject_if'. – Kasper
- 1. testowania: reject_if w ANAF
- 2. Zagnieżdżone atrybuty: niechciana walidacja pomimo reject_if: All_blank
- 3. Szyny 4: accepts_nested_attributes_for i przypisanie masy
- 4. Szyny i przecinak i edytor
- 5. Szyny 4 i ActionCable
- 6. szyny wybierz i włącz
- 7. Szyny 3 i validate_on_create
- 8. Szyny, OpenID i Authlogic
- 9. Szyny skojarzeń i formularze
- 10. Szyny, Windows i HTTPS
- 11. Szyny, Geokodery i pobliski
- 12. accepts_nested_attributes_for &: reject_if. Jak zapobiec odrzuceniu, dopóki stowarzyszenie rodziców nie zbawi?
- 13. Szyny act_as_paranoid i has_many: do
- 14. Szyny inicjator rozwoju i produkcji
- 15. Szyny: reply_to JSON i HTML
- 16. Szyny Auth Token i Ajax
- 17. Git tagging i szyny gemfile
- 18. Szyny i Mailchimp - Welcome email
- 19. Szyny błąd forma zagnieżdżone, dziecko musi istnieć
- 20. Szyny Gem zdezynfekować - Jak do białej i
- 21. Szyny has_many: przez warunki i asocjacje budynku
- 22. Szyny: jak formatować i organizować trasy
- 23. Szyny HABTM i rekord znalezieniu bez związku
- 24. Szyny i18n i trasy w javascript
- 25. PostgreSQL, Szyny i: order => Problem
- 26. szyny omniauth i UTF-8 błędy
- 27. Szyny - dodaj atrybuty i dodaj do tablicy
- 28. Szyny 3 i Strange Zebrane nagłówków
- 29. Szyny i znacznik <span>
- 30. Szyny chętne do załadowania i ograniczenia
Należy pamiętać, że reject_if odrzuca tylko zmiany zagnieżdżonych atrybutów, nie spowoduje to błędu podczas zapisywania modelu ze źle zagnieżdżoną wartością atrybutu. Jeśli chcesz uzyskać błąd w przypadku źle zagnieżdżonych atrybutów, po prostu dodaj weryfikację do modelu zagnieżdżonego, a następnie zwróci błąd podczas zapisywania modelu nadrzędnego. –