Hom*_*oud 6 ruby ruby-on-rails-4 spree-auth-devise
spree-auth-devise gem 中有一个私有方法。该方法位于控制器 UserSessionsController https://github.com/spree/spree_auth_devise/blob/master/lib/controllers/frontend/spree/user_sessions_controller.rb
我希望覆盖函数“redirect_back_or_default”。
这可能吗?
在你的答案之间混合和匹配并做了一些谷歌搜索之后,我得到了这个解决方案:
Spree::UserSessionsController.class_eval do
private
def redirect_back_or_default(default)
if default == "/admin/orders" or session["spree_user_return_to"] == "/admin/orders"
redirect_to("/admin/users")
else
redirect_to(session["spree_user_return_to"] || default)
end
session["spree_user_return_to"] = nil
end
end
Run Code Online (Sandbox Code Playgroud)
我已将脚本文件放在 config/initializers 中。
谢谢你们。
你可以这样做:
class HelloWorld
def run
say_hello_world
end
private
def say_hello_world
puts "hello world"
end
end
HelloWorld.new.run
"hello world"
=> nil
Run Code Online (Sandbox Code Playgroud)
现在让我们扩展/覆盖当前的行为。
class HelloWorld
private
def say_hello_world
puts "Goodbye"
end
end
HelloWorld.new.run
"Goodbye"
=> nil
Run Code Online (Sandbox Code Playgroud)
既然这是可行的并且是可能的,那么猴子修补它怎么样?像这样的东西:
class Spree::UserSessionsController < Devise::SessionsController
private
def redirect_back_or_default(default)
# your logic
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3665 次 |
| 最近记录: |