1
我在友誼控制器中的通用CRUD外部有一個自定義方法,叫做請求。我的問題是,我已將before_filter :require_auth
設置爲在我的FriendshipsController
中的所有方法之前運行。before_filter未被稱爲rails?
除請求方法外,它工作正常。
(這讓我覺得這有什麼用它做是出正常的CRUD的?)
當我調用請求的方法現在跳過:require_auth
直去這是給我的錯誤請求方法因爲我在:require_auth
中定義了一些我在請求方法中需要的變量。
這裏是我的FriendshipsController
:
class FriendshipsController < ApplicationController
skip_before_filter :verify_authenticity_token, :only => [:create]
before_filter :require_auth
def create
@friendship = Friendship.new(user_id: params[:user_id], friend_id: params[:friend_id], status: params[:status])
if @friendship.save
render :status => 200, :json => {:message => "Friendship Created"}
else
render :status => 500, :json => { :message => "Problem creating friendship" }
end
end
def request
# friendID = params[:friend_id]
# userID = @currentuser.id
binding.pry
@userid = @currentuser.id
@friendid = params[:friend_id]
unless (@userid == @friendid || Friendship.exists?(user_id: @userid,friend_id: @friendid))
create(:user_id => userID, :friend_id => friendID, :status => 'pending')
create(:user_id => friendID, :friend_id => userID, :status => 'requested')
end
end
end
這是我ApplicationController
,我定義require_auth
:
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
# protect_from_forgery with: :null_session
def require_auth
binding.pry
auth_token = request.headers["HTTP_AUTH_TOKEN"]
@user = User.find_by_auth_token(auth_token)
if @user.auth_token
@currentuser = @user
else
render :status => 401, :json => {:error => "Requires authorization"}
return false
end
end
end
什麼Rails版本?導致在Rails 4中它調用'before_action'。但它應該是另一個錯誤。 – zishe
@zishe我相信'before_filter'仍然可以在Rails 4中使用,但不推薦使用。 –
考慮更改動作的名稱。 'request'通常是您可以調用以獲取有關當前請求的信息的對象的名稱。 –