рельсы ассоциации has_many - PullRequest
0 голосов
/ 08 мая 2011

У меня есть модель User и модель Job_Category, модель Job_Category

belongs_to :user

Модель User

has_many :job_categories, :dependent => :destroy   

У меня есть контроллер панели мониторинга, и я пытаюсь отобразить все Job_Categoriesдля определенного зарегистрированного пользователя.

class DashboardController < ApplicationController
before_filter :authenticate_user!


def index
 @user = User.find(params[:id])
 @job_categories = @user.job_categories


 #@job_categories = JobCategory.all

 #respond_to do |format|
#   format.html # index.html.erb
#   format.xml  { render :xml => @job_categories }
# end

end

Однако, когда я пытаюсь отобразить это, я получаю сообщение об ошибке «Не удалось найти пользователя без идентификатора».Я вижу это в журнале:

Обработка DashboardController # index как HTML User Load (0.3ms) ВЫБРАТЬ "users". * FROM "users" WHERE ("users". "Id" = 2) LIMIT 1Завершено за 22 мс

ActiveRecord :: RecordNotFound (не удалось найти пользователя без идентификатора): app / controllers / dashboard_controller.rb: 9: в `index '

1 Ответ

1 голос
/ 09 мая 2011

Прежде всего, вы не можете попытаться найти по параметрам в консоли, потому что такого нет.

Попробуйте это в консоли:

User.find (2)

(.. столбец по умолчанию, где метод find ищет значение, является первичным ключом, который, как я полагаю, является id как обычно)

Еще одна вещь, если вы уже аутентифицируете пользователя вbefore_filter, у вас уже может быть установлен @current_user или что-то еще, вы используете какой-нибудь плагин аутентификации, такой как devise или что-то еще?Поэтому нет необходимости передавать идентификатор текущего пользователя контроллеру приборной панели.Контроллер приложений уже знает, кто этот пользователь, и ваш контроллер панели мониторинга является его подклассом.

И убедитесь, что в вашей таблице job_category есть столбец user_id.

...