Rails 4.0验证

时间:2013-07-23 21:59:34

标签: ruby-on-rails verify

在旧应用程序的TrackerController中,这个构造在rails 4中已被弃用。

verify :method => :post, :only => [ :destroy, :create, :update ],
       :redirect_to => { :action => :calendar }

我认为这是在routes.rb

中翻译验证的方式
post 'destroy' => 'tracker#calendar'
post 'create' => 'tracker#calendar'
post 'update' => 'tracker#calendar'

但TrackerController中没有销毁,创建或更新操作。

下一行有更多验证。

verify :session => :loggedin_user_id, :redirect_to => "/login"
verify :session => :selected_user_id, :redirect_to => "/users"
verify :session => :privileged_user,  :only => [:unlock, :destroy_allowance, :acknowledge], :redirect_to => "/Tracker"
挖掘,我认为这将是如何重写以上。

before_action :require_login, require_user

def require_login
  unless session[:loggedin_user_id?]
    redirect_to '/login'
  end
end

def require_user
  unless session[:selected_user_id?]
    redirect_to '/users'
  end
end

但是require_user也会执行。

您将如何重新构建这些验证?

THX!

1 个答案:

答案 0 :(得分:0)

你的问题不是很清楚。你能澄清一下吗?

也就是说,如果require_login为真(无session[loggedin_user_id?]),则会短路,require_user将无法运行。

至于路线,这取决于你想要的方式。正确的方法是让它变得安静。例如:

resources :calendars # This defines [:index, :show, :new, :create, :edit, :update]

如果您不想要所有这些:

resources :calendars, only: [:index, :show, :whatever_you_want]

这会自动设置以下路线:

get :index
get :show
get :new
get :edit
post :create
put :update
delete :destroy

它为您提供了以下帮助,您可以在链接和表单中使用它们。

calendars_path
new_calendar_path
calendar_path(:id) # delete, put, post