Вызов create
сохраняет действительные объекты. Поэтому после этого вам не нужно звонить save
. Но мы знаем, что он не спасен. Первое подозрение - ошибка проверки.
Чтобы отладить вашу экономию, вы можете использовать метод create!
вместо create
. Это приведет к исключению, если ваше сохранение не удастся. Но использование create!
, а также других методов «взрыва» - не очень хорошая практика. Поэтому я не могу предложить вам использовать его в вашем производственном коде.
И еще один отзыв в случае, если create!
работы и create
не: Лучшая практика для выполнения создания в вашем случае использования что-то вроде следующего:
def createUser
user = Usuario.new(nombre: "aa", corp: self, email: "[email protected]", password: 123456, password_confirmation: 123456, rol: 3)
user.save ? true : user.errors
end
Этот код будет возвращать результат преуспевающим (true
) если ваш user
был создан, и ошибки проверки произошли, если нет. Таким образом, вы сможете правильно обрабатывать свои ошибки в коде, который вызывает createUser
. А также покажет, почему ваши сбережения не работают сейчас.
Это был мой мистический наконечник, но это не ошибка, извините – Bryan
create! работал, спасибо большое. – Bryan
Держитесь. Не очень хорошая практика использовать 'create!' И другие методы «bang» в вашем производственном коде. Однако это может быть полезно для отладки. Поэтому вам лучше узнать, почему ваш простой 'create' не работал. По-прежнему считайте, что сделка - это ваше 'Corporacion', которого нет в то время, когда вы создаете« Пользователь ». – VAD