Ruby on rails call()方法是如何工作的?
我正在根据在应用程序中实现授权 在其中一个实例方法中,Ryan Bates正在使用方法.call,我不知道它到底在做什么。这是一种特殊的方法:Ruby on rails call()方法是如何工作的?,ruby-on-rails,ruby,railscasts,Ruby On Rails,Ruby,Railscasts,我正在根据在应用程序中实现授权 在其中一个实例方法中,Ryan Bates正在使用方法.call,我不知道它到底在做什么。这是一种特殊的方法: def allow?(controller, action, resource = nil) allowed = @allow_all || @allowed_actions[[controller.to_s, action.to_s]] allowed && (allowed == true || resource &&
def allow?(controller, action, resource = nil)
allowed = @allow_all || @allowed_actions[[controller.to_s, action.to_s]]
allowed && (allowed == true || resource && allowed.call(resource))
end
资源参数是一个实例对象,局部变量
allowed
应该是一个布尔值。call
计算将参数传递给它的过程或方法接收器
pr = ->a{a.map(&:upcase)}
pr.call(%w[hello world])
# => ["HELLO", "WORLD"]
m = "hello".method(:concat)
m.call(" world")
# => "hello world"
它用于回调作为对象传递的一段代码。
call
计算将其参数传递给它的过程或方法接收器
pr = ->a{a.map(&:upcase)}
pr.call(%w[hello world])
# => ["HELLO", "WORLD"]
m = "hello".method(:concat)
m.call(" world")
# => "hello world"
它用于回调作为对象传递的一段代码。显然,
allowed
也可以是进程。查看定义(@allowed_actions[[controller.to_s,action.to_s]]
)。allowed
也可以是一个方法对象。检查p allowed.instance_of?(method)
…我假设要理解这一点,我需要理解Proc。为了理解Proc,我必须完全理解闭包。为了理解闭包,我最好休息一周,买些书。很抱歉问了一个不好的问题。显然,允许
也可以是一个过程。查看定义(@allowed_actions[[controller.to_s,action.to_s]]
)。allowed
也可以是一个方法对象。检查p allowed.instance_of?(method)
…我假设要理解这一点,我需要理解Proc。为了理解Proc,我必须完全理解闭包。为了理解闭包,我最好休息一周,买些书。我很抱歉问了一个不好的问题。