我已经覆盖了我设计的gem中的send_devise_notification方法。
我需要访问*args数组中的第一个元素,我假设这可以通过*args[0]来实现。
我期待的是一个字符串,但看看下面奇怪的输出:
class User
include Mongoid::Document
devise :confirmable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :lockable
protected
def send_devise_notification(notification, *args)
p *args.inspect # => ["auNsGzsnpoQWtAk2Z1Tr", {}]
p *args[0].inspect # => "auNsGzsnpoQWtAk2Z1Tr"
p *args[0].class.to_s.inspect # => "String"
token = *args[0]
p token.inspect # => ["auNsGzsnpoQWtAk2Z1Tr"]
p token.class.to_s.inspect # => "Array"
end
end当我记录它的时候,我看到了一个字符串。但是当我把它放入一个token变量时,我看到了一个数组。我不能把变量转换成字符串。我尝试过token.to_s等。
知道发生了什么吗?
发布于 2019-08-29 17:02:34
你应该使用args,它是一个数组:
def a(*args)
args.each {|e| puts "-- #{e}" }
end
a(1,2,3,4)
#-- 1
#-- 2
#-- 3
#-- 4
#=> [1, 2, 3, 4]因此,如果你想得到它的第一个元素--调用args[0]或args.first (不带前导星号)。
发布于 2019-08-29 17:05:53
您可以使用args.first来获取第一个元素,因为*args是一个数组。
https://stackoverflow.com/questions/57706598
复制相似问题