рельсы создают ошибку - PullRequest
0 голосов
/ 07 июня 2011

У меня есть сообщение с использованием Ancestry.Отвечая на сообщение от другого пользователя, я получаю:

в строке:

@post = current_user.posts.new(params[:post])

Запущен POST "/posts.js" для 127.0.0.1 в вторник, 07 июня 13: 50: 19 +0300 2011
Обработка PostsController # create as JS Параметры: {"commit" => "Post", "post" => {"body" => "

a

","parent_id" => "5", "Discussion_id" => "1"}, "authenticity_token" => "RUra0Ndv67cgaGshBS5yCJMq5V6WG6OuZiqDbbWP5cc =", "utf8" => "✓"} Пользовательская загрузка (0,2 мс) SELECT "users" *.ОТ "users" WHERE ("users". "Id" = 33) LIMIT 1 Post Load (0.2ms) ВЫБРАТЬ "posts". * FROM "posts" WHERE ("posts" .user_id = 33) AND ("posts")."id" = 5) LIMIT 1 Завершено за 238 мс

ActiveRecord :: RecordNotFound (Не удалось найти сообщение с ID = 5 [WHERE ("posts" .user_id = 33)]):
app /controllers / posts_controller.rb: 28: in `create '

Как мне его отладить?

1 Ответ

0 голосов
/ 07 июня 2011

Мой первый шаг - открыть консоль rails (в командной строке введите «rails console»), а затем попробуйте следующее:

>> x = Post.find(5)

Если вы найдете его, проверьте user_id в этой записи. Это действительно существует? Если это так, это хорошо знать.

Далее я бы взял SQL-код из вашего вывода выше и запустил его вручную в любой используемой вами базе данных. Если вы используете SQLite3, вы можете сделать:

>> sqlite3 db/development.sqlite3

Если он существует, то справедливо почесать голову. Я подозреваю, что вы найдете, что это не там.

Является ли ссылка для ответа на сообщение, созданная вручную, на ваш взгляд? Вы уверены, что он построен правильно - два идентификатора интереса - именно то, что вы и предполагали?

Если все правильно, то я бы просто использовал отладчик ruby ​​в вашем контроллере и начал бы перебирать код. Если вы не знакомы с отладчиком ruby, вы можете получить гем, как описано в вашем Gemfile, а затем, когда он окажется в вашем гемсете, вы можете добавить следующую строку кода, где вы хотите установить точку останова своего кода:

require 'ruby-debug'; debugger

Тогда вы можете исследовать по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...