Самое минимальное изменение, которое я мог бы сделать, чтобы ваш код работал:
Store.create(
name: "Some Store",
email: "store@example.com",
user_id: @user&.id
)
При этом используется оператор безопасной навигации (&.
) для "игнорирования вызовов методов" для значений nil
.
Однако, почему вы выбираете объект с нулевым значением, а затем пытаетесь вызвать для него метод?Учитывая контекст вашего исходного поста, вы можете вместо этого просто сделать:
Store.create(
name: "Some Store",
email: "store@example.com",
user: @user
)
Это будет работать нормально, независимо от того, существует @user
.
... Или, возможно,даже то, что вы действительно намерены сделать, это что-то вроде:
Store.create(
name: "Some Store",
email: "store@example.com",
user: User.find_or_create_by(name: 'Sam')
)