Ruby on rails 4 想办法记住我!不起作用

Ruby on rails 4 想办法记住我!不起作用,ruby-on-rails-4,devise,Ruby On Rails 4,Devise,我的sessions\u controller.rb文件中有以下代码: module V1 class Users::SessionsController < Devise::SessionsController # POST /sign_in def new user = User.find_by_email(params[:user][:email]) if params[:user] if user && user.va

我的
sessions\u controller.rb文件中有以下代码:

module V1
  class Users::SessionsController < Devise::SessionsController

    # POST /sign_in
    def new
      user = User.find_by_email(params[:user][:email]) if params[:user] 
      if user && user.valid_password?(params[:user][:password])
        sign_in(:user, user)
        current_user.remember_me!
        head 200
      else
        render status: 200, json: {errors: ["Incorrect email / username or password."]}.as_json
      end
    end

    # ...

  end
end
class User < ActiveRecord::Base
  has_many :posts
  has_many :comments

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  validates :email, presence: true, uniqueness: true
  validates :password, confirmation: true, presence: true
  validates :password_confirmation, presence: true
end
Rails.application.routes.draw do
  devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
  devise_scope :user do
    post "sign_in", to: "v1/users/sessions#new"
    delete "sign_out", to: "v1/users/sessions#destroy"
    post "register", to: "v1/users/registrations#create"
  end

  namespace :v1, defaults: {format: 'json'} do
    devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
    # Routes for posts
    get 'posts(/index)', :to => 'posts#index'
    post 'posts/create'
    delete 'posts/:id', :to => 'posts#destroy'
    get 'posts/show'
    put 'posts/:id', :to => 'posts#update'
  end
end
在我的贴子控制器中,我在操作之前设置了
:验证用户。我正在使用rails构建一个API,并通过从一个名为。我还尝试了从我的AngularJS应用程序(在不同于API的子域上)进行测试。为什么在我刚登录时,通过将正确的凭据发送到
/sign\u in
会收到一个错误,告诉我登录。由于这只是一个API,是否有特殊考虑

编辑:

我的
user.rb
文件:

module V1
  class Users::SessionsController < Devise::SessionsController

    # POST /sign_in
    def new
      user = User.find_by_email(params[:user][:email]) if params[:user] 
      if user && user.valid_password?(params[:user][:password])
        sign_in(:user, user)
        current_user.remember_me!
        head 200
      else
        render status: 200, json: {errors: ["Incorrect email / username or password."]}.as_json
      end
    end

    # ...

  end
end
class User < ActiveRecord::Base
  has_many :posts
  has_many :comments

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  validates :email, presence: true, uniqueness: true
  validates :password, confirmation: true, presence: true
  validates :password_confirmation, presence: true
end
Rails.application.routes.draw do
  devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
  devise_scope :user do
    post "sign_in", to: "v1/users/sessions#new"
    delete "sign_out", to: "v1/users/sessions#destroy"
    post "register", to: "v1/users/registrations#create"
  end

  namespace :v1, defaults: {format: 'json'} do
    devise_for :users, controllers: { sessions: "users/sessions", registrations: "users/registrations" }
    # Routes for posts
    get 'posts(/index)', :to => 'posts#index'
    post 'posts/create'
    delete 'posts/:id', :to => 'posts#destroy'
    get 'posts/show'
    put 'posts/:id', :to => 'posts#update'
  end
end

您在User.rb中为Desive提供了什么?有这样的吗?designe:database\u authenticable,:registerable,:memberable您是否尝试过放入布局并查看输出?同样,这只是一个猜测,但是您是否尝试过找到用户对象并执行Rememberme!就在用户对象上?我已经尝试了
user。记住我(在找到实际的用户对象之后),它也不起作用。都
user.memory\u me
当前用户。记住我返回空值。我没有布局,所以我只是以JSON的形式返回结果。你能在这里尝试一下答案吗?我尝试过这种解决方案和类似的解决方案,但仍然没有成功。