#ruby-on-rails #ruby #activerecord #activemodel
#ruby-on-rails #ruby #activerecord #activemodel
Вопрос:
Я работаю с контроллером, который следует принципу resource_controller, описанному здесь.
Как вы можете видеть, у меня нет полного контроля над (new, create и т.д.), Все они предварительно загружают данные, что означает, что если я хочу создать новую сущность, скажем, @user
следующий код уже был вызван @user = User.new
.
Единственный способ, которым я могу включить некоторую проверку, — это обратные вызовы, но как только обратный вызов решает отменить новый метод, я всегда получаю ошибку «Замороженный хэш». Другими словами, я не могу сказать
@user = User.new
@user.destroy
Единственный взлом, который я смог придумать, был
@user = User.new
@user.save
@user.destroy
Кто-нибудь знает лучший способ, который не требует сохранения данных в базе данных? И, кстати, в чем разница между активной записью и активной моделью?
Ответ №1:
Как насчет проверки, была ли она сохранена перед ее уничтожением?
@user.destroy unless (@user.new_record?)