Я пытаюсь использовать REST API, поэтому я хочу получить @current_user в APP2 из RoR APP1 .
В APP1 / config / rout.rb У меня есть этот код:
resources :users do
collection do
get 'current'
end
end
В APP1 / controllers / application_controller.rb У меня есть этот код:
before_filter :current_user
def current_user
if cookies[:remember_me]
current_user = user_from_cookie
else
current_user = User.find_by_id(session[:current_user_id])
end
unless !current_user.nil?
default_current_user = User.find_by_id(1)
end
return @current_user = current_user.nil? ? default_current_user : current_user
end
В APP1 / controllers / users_controller.rb У меня есть этот код:
def index
...
end
def show
...
end
...
def current
respond_to do |format|
format.xml { render :xml => @current_user }
end
end
В APP2 / models / user.rb У меня есть этот код:
class User < ActiveResource::Base
self.site = "http://APP1"
end
В APP2 / controllers / application_controller.rb У меня есть этот код:
before_filter :current_profile
def current_profile
@current_profile = User.get(:current)
end
Теперь, если я войду в свой User2 в APP1 и перейду на http://APP1/users/current.xml URL, я получу правильный @current_user (объект User2), но если я пойду на http://APP2/,, хотя у меня есть 'before_filter's', @current_profile всегда будет default_current_user (объект User.find_by_id (1)) вместо User2 .
Кажется, пофиг этот код из APP1 / controllers / application_controller.rb:
if cookies[:remember_me]
current_user = user_from_cookie
else
current_user = User.find_by_id(session[:current_user_id])
end
Что не так?
EDITED
Может быть, мы сможем решить эту проблему с помощью параметров APP1 / config / rout.rb (?!):
Пример: в APP1 / config / rout.rb
resources :users do
collection do
get 'current', :current_user => @current_user # ?!
end
end
или что-то в этом роде.