在旧应用程序的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!
答案 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