Я пытаюсь разрешить текущему пользователю приглашать другого пользователя и назначить нового приглашенного в список, но я получаю сообщение об ошибке, когда приглашенный пользователь переходит на регистрацию.Ошибка при присвоении атрибута ресурсу в rails
Есть две модели, Пользователь и Листинг, которые связаны с has_and_belongs_to_many на каждой модели. Существует также модель приглашения, содержащая токен и список, которому должен быть назначен приглашенный.
Я перекрывая контроллер регистраций DEViSE:
def new
resource = build_resource({:invitation_token => params[:invitation_token]})
resource.email = resource.invitation.recipient_email if resource.invitation
respond_with resource
end
# POST /resource
def create
resource = build_resource
resource.listings << resource.invitation.listing if resource.invitation
. . .
Когда я приглашаю нового пользователя и перейти к Новенькие (регистрация/новый) страницы, заполните форму, и нажмите на кнопку отправить, он отлично работает. Но, если я пропущу часть формы вызывая ошибку проверки, когда я затем заполнить форму правильно, и нажмите на кнопку отправить, я получаю следующее сообщение об ошибке:
Couldn't find Listing with id=0
появляется ошибка, происходит на линии :
resource.listings << resource.invitation.listing if resource.invitation
Без этой линии ошибка не происходит.
Здесь ошибка из журналов сервера:
Listing Load (0.3ms) SELECT "listings".* FROM "listings" WHERE "listings"."id" = $1 LIMIT 1 [["id", 0]]
Что я здесь делаю неправильно?