current_user
Devise経由でアクセスしようとすると...
def current_user
@user = User.find(current_user.id)
@user
end
そして、この RABL テンプレートを介して JSON で属性の一部をレンダリングします...
object @user
attributes :email, :username
このエラーが発生します...
SystemStackError at /api/current_user
stack level too deep
エラーは、この User モデル内の何かが原因であると思います。これを少し変更して Username フィールドに追加しました。この機能を追加するには、 Devise の指示に従いました...
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :login, :username, :email, :password, :password_confirmation, :remember_me
has_many :cart_items, dependent: :destroy
# Virtual attribute for authenticating by either username or email
# This is in addition to a real persisted field like 'username'
attr_accessor :login
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
if login = conditions.delete(:login)
where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
else
where(conditions).first
end
end
end