设计'current_user'在控制器中无法正常工作?

时间:2012-08-22 18:43:34

标签: ruby ruby-on-rails-3 devise

我可能错过了一些非常明显的东西,但我无法想象这对我的生活......

我正在尝试在before_filter中进行简单的Orders_Controller检查,以查看设计current_user.vendor_id == params[:vendor_id]。每次都返回false,将我重定向到root_path,因为我已将其设置在orders_controller ...

before_filter :check_vendor
.
.
.
private

def check_vendor
 unless current_user.vendor_id == params[:vendor_id]
  redirect_to root_path, :flash => { error: "Sorry, but you don't have sufficient privlidges to view that page" }
 end
end

最奇怪的是,当我向用户登录时,导航到

http://localhost:3000/vendors/3/orders/

并在我的索引中使用此代码:

<%= current_user.vendor_id %> <%= params[:vendor_id] %>

它打印在orders#index视图中:

3 3

这应该意味着当我在控制器中使用相同的逻辑时,它会看到两个值都是'3'(或current_user.vendor_idparams[:vendor_id]的任何值)

任何帮助都将不胜感激:)很抱歉,如果这是一个明显的答案,我在Rails还是新手。

1 个答案:

答案 0 :(得分:1)

您确定要在第一次向控制器发出请求时发送de param [:vendor_id]吗?

我会将gem 'debugger'添加到我的gemfile中,运行bundle install,然后将debugger放在before_filter中的comparisson上方。

然后检查参数和当前用户值。

相关问题