Ruby on rails 将变量设置为等于自身,除非它不';不存在
我现在正在解析Linkedin API,您可以请求各种字段及其值。有时用户对某个字段有值,有时则没有 例如,如果用户没有输入电话号码,Linkedin将不会返回电话号码字段 对Linkedin的请求示例Ruby on rails 将变量设置为等于自身,除非它不';不存在,ruby-on-rails,ruby,variables,Ruby On Rails,Ruby,Variables,我现在正在解析Linkedin API,您可以请求各种字段及其值。有时用户对某个字段有值,有时则没有 例如,如果用户没有输入电话号码,Linkedin将不会返回电话号码字段 对Linkedin的请求示例 电子邮件、名字、姓氏、电话号码 Linkedin回复示例: {"email"=>"test@example.com", "firstName"=>"Brian", "lastName"=>"Weinreich"} 因此,我请求4件事:电子邮件、名字、姓氏、电话号码,它只返回3
电子邮件、名字、姓氏、电话号码
Linkedin回复示例:
{"email"=>"test@example.com", "firstName"=>"Brian", "lastName"=>"Weinreich"}
因此,我请求4件事:电子邮件、名字、姓氏、电话号码,它只返回3件事。我想知道是否有更快/更有效的方法将变量设置为这些值,这取决于它们是否存在
我就是这样做的。。。但这似乎是多余的
@user.email = profile['emailAddress'] ? profile['emailAddress'] : ""
@user.phone_number = profile['phoneNumber'] ? profile['phoneNumber'] : ""
@user.first_name = profile['firstName'] ? profile['firstName'] : ""
@user.last_name = profile['lastName'] ? profile['lastName'] : ""
这相当简单-设置哈希的默认值:
> profile={"email"=>"test@example.com", "firstName"=>"Brian", "lastName"=>"Weinreich"}
=> {"email"=>"test@example.com", "firstName"=>"Brian", "lastName"=>"Weinreich"}
> profile.default = ""
=> ""
然后,只要简单的任务就可以完成您所需要的:
@user.email = profile['emailAddress']
@user.phone_number = profile['phoneNumber']
@user.first_name = profile['firstName']
@user.last_name = profile['lastName']
对于更复杂的情况,您还可以设置以下值,而不是一个默认值Proc
block:
profile.default_proc= proc {|hash, key| hash[key] = (key =~ /email/i) ? "default@example.com" : ""}
> profile['email']
=> "test@example.com"
> profile['hiddenEmail1234']
=> "default@example.com"
> profile['some-other-key']
=> ""
这相当简单-设置哈希的默认值:
> profile={"email"=>"test@example.com", "firstName"=>"Brian", "lastName"=>"Weinreich"}
=> {"email"=>"test@example.com", "firstName"=>"Brian", "lastName"=>"Weinreich"}
> profile.default = ""
=> ""
然后,只要简单的任务就可以完成您所需要的:
@user.email = profile['emailAddress']
@user.phone_number = profile['phoneNumber']
@user.first_name = profile['firstName']
@user.last_name = profile['lastName']
对于更复杂的情况,您还可以设置以下值,而不是一个默认值Proc
block:
profile.default_proc= proc {|hash, key| hash[key] = (key =~ /email/i) ? "default@example.com" : ""}
> profile['email']
=> "test@example.com"
> profile['hiddenEmail1234']
=> "default@example.com"
> profile['some-other-key']
=> ""
好吧,那很容易哈。谢谢为将来的引用调用了什么?我知道它是一个“OR”语句,但为什么它默认为空字符串?是因为配置文件['emailAddress']是假的吗?更正确的说法是因为配置文件['emailAddress']是假的。ruby中的两个错误是nil
和false
。另外:你可以通过使用配置文件['emailAddress']来避免|”“
部分。to_s
(因为nil。to_s
返回”
)好的,这很简单。谢谢为将来的引用调用了什么?我知道它是一个“OR”语句,但为什么它默认为空字符串?是因为配置文件['emailAddress']是假的吗?更正确的说法是因为配置文件['emailAddress']是假的。ruby中的两个错误是nil
和false
。另外:你可以通过这样做profile['emailAddress']来避免|
部分。to
(因为nil。to
返回”
)2个澄清问题:1)为什么不把属性nil
?2) 您在哪里设置这些属性?2个澄清问题:1)为什么不将属性保留为nil
?2) 你在哪里设置这些属性?这很好。谢谢那太好了。谢谢