Jak wiadomo, wywołania zwrotne before_save
są wykonywane przed wywołania zwrotne before_create
.Is: on =>: create valid dla wywołania zwrotnego before_save w Railsach 3.2.3
Dlatego niektórzy sugerują, że lepiej byłoby użyć before_save :method, :on => :create
zamiast before_create
, aby metoda wywołania zwrotnego była wykonywana we właściwym czasie w stosunku do innych wywołań zwrotnych (takich jak wywołania zwrotne z funkcją automatycznego zapisu). Zobacz na przykład ten Pivotal Labs blog post i this StackOverflow answer.
Jednak, o ile mogę stwierdzić, opcja :on => :create
nie osiąga pożądanego efektu na wywołania zwrotnym before_save
. Innymi słowy, wywołanie zwrotne jest wykonywane dla każdego zapisu, niezależnie od tego, czy jest to tworzenie czy nie.
:on => :create
opcja robi wydają się być ważne dla before_validation
wywołań zwrotnych, choć.
Czy ktoś mógłby potwierdzić, że :on => :create
ma działać pod numerem before_save
? Czy to działało w poprzednich wersjach Railsów i jest teraz zepsute, czy te linki są po prostu błędne?
Zakładając, że :on => :create
jest niepoprawny, czy dopuszczalne są poniższe i czy istnieje lepszy sposób?
before_save :callback_method, :if => :new_record?
Dziękuję.
złożyłam PR dla szyn dodać ścisłą kontrolę Argument: https://github.com/rails/rails/pull/30919 – seanlinsley