неопределенный метод `id 'для nil: NilClass при создании новой записи - PullRequest
0 голосов
/ 14 октября 2018

У меня две таблицы «Поездки» и «Остановка». Когда я создаю новое путешествие, мне нужно создать одну остановку.Остановка также ссылается на таблицу станций. Это прекрасно работает:

@stop = Stop.create(Station.find_by("Station name ").id)

Но когда я пробую приведенное ниже, это дает мне

неопределенный метод "id" для nil: NilClassошибка

name = "whatever" 
@stop = Stop.create(Station.find_by(name: name).id)

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

В отличие от find, find_by принимает параметр хеш-функции, поэтому вы должны использовать его следующим образом:

Model.find_by(field: "value")

Это выдает эту ошибку, поскольку в базе данных нет записи с данным именем.Вы также можете попробовать find_by!, который вызывает исключение ActiveRecord::RecordNotFound, когда запись не существует.

0 голосов
/ 15 октября 2018

Простой, в таблице станций нет записи "что угодно".

Stop.create(Station.find_by(name: name)&.id)

Если вы хотите игнорировать ошибку и вернуть nil

0 голосов
/ 14 октября 2018

Как мы можем быть уверены, что find_by name возвращает объект Station?Мы не можемЭто было бы безопаснее

if station = Stating.find_by(name: name) # returns nil if no record with name
  @stop = Stop.create(station.id)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...