Как вы знаете, коллбэки before_save
выполняются до before_create
обратные вызовы.
Поэтому некоторые люди предположили, что лучше использовать before_save :method, :on => :create
вместо before_create
, чтобы метод обратного вызова выполнялся в правильное время по отношению к другим обратным вызовам (таким как обратные вызовы автосохранения). См., например, этот пост в блоге Pivotal Labsи этот ответ StackOverflow.
Однако, насколько я могу судить, опция :on => :create
не дает желаемого эффекта при обратном вызове before_save
. Другими словами, обратный вызов выполняется для каждого сохранения, независимо от того, является ли это созданием или нет.
Однако опция :on => :create
действительнокажется допустимой для обратных вызовов before_validation
.
Может ли кто-нибудь подтвердить, должно ли :on => :create
работать для before_save
? Работало ли это в предыдущих версиях Rails и теперь не работает, или вышеупомянутые ссылки просто ошибочны?
Предполагая, что :on => :create
недопустимо, допустимо ли следующее и/или есть ли лучший способ?
before_save :callback_method, :if => :new_record?
Спасибо.