Я работаю над Rails и угловым приложением, которое использует Devise для аутентификации. У меня проблемы с доступом к current_user в действии моего контроллера index
.Rails Проблемы с дизайном доступа к current_user в контроллере
Мне нужно отображать списки, принадлежащие конкретному пользователю.
class ListsController < ApplicationController
respond_to :json
before_filter :authenticate_user!
def index
respond_with current_user.List.all
end
def create
respond_with List.create(list_params.merge(user_id: current_user.id))
end
end
Когда я иду к индексу, это не возвращает ошибок нет методы:
Started POST "https://stackoverflow.com/users/sign_in.json" for ::1 at 2015-05-22 18:08:20 -0400
Processing by Devise::SessionsController#create as JSON
Parameters: {"user"=>{}, "session"=>{"user"=>{}}}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Completed 201 Created in 37ms (Views: 1.5ms | ActiveRecord: 2.9ms)
Started POST "https://stackoverflow.com/users/sign_in.json" for ::1 at 2015-05-22 18:08:20 -0400
Processing by Devise::SessionsController#create as JSON
Parameters: {"user"=>{}, "session"=>{"user"=>{}}}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Completed 201 Created in 14ms (Views: 1.6ms | ActiveRecord: 0.3ms)
Started GET "/lists.json" for ::1 at 2015-05-22 18:08:20 -0400
Processing by ListsController#index as JSON
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Completed 500 Internal Server Error in 7ms
NoMethodError (undefined method `List' for #<User:0x007fdb5bc37a10>):
app/controllers/lists_controller.rb:6:in `index'
Если изменить «индекс» действие на List.all, он будет возвращать список всех пользователей. Мне нужно только доступ к спискам для определенного пользователя.
Вот мой список модель:
class List < ActiveRecord::Base
belongs_to :user
has_many :words, dependent: :delete_all
def as_json(options = {})
super(options.merge(include: :words))
end
end
Это работает, спасибо! –