0

在旧应用程序的 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 也会执行。

你将如何重建这些验证?

谢谢!

4

1 回答 1

0

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

也就是说,如果require_login为真(否session[loggedin_user_id?]),它将短路并且require_user不会运行。

至于路线,嗯,这取决于你想怎么做。正确的方法是让它变得Restful。例如:

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
于 2013-07-23T22:33:02.007 回答