Ruby on rails Rails 4.0验证
在旧应用程序的TrackerController中,rails 4中不推荐使用这种结构Ruby on rails Rails 4.0验证,ruby-on-rails,verify,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' =&
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\u login
为true(无session[loggedin\u user\u id?]
),它将短路,并且require\u 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
我的一般问题实际上是如何重构验证,使系统与rails 4的行为相同。那么,当前代码的问题是什么?发生了什么导致其行为不同?另外,
require\u user
应该做什么?我不知道我问的问题是否正确。我只是在学习rails,这个应用程序是很久以前开发的。我试着让它运行rails 4.ok。验证:method=>:post,:only=>[:destroy,:create,:update],:redirect_to=>{:action=>:calendar}在routes.rb中以这种方式构造它是否正确?发布‘销毁’=>‘跟踪器#日历’发布‘创建’=>‘跟踪器#日历’发布‘更新’=>‘跟踪器#日历’不知道用户应该做什么。我只是根据我对verify:session=>:selected\u user\u id,:redirect\u to=>“/users”的理解进行猜测