ruby-on-rails – Ruby的简写,“如果它不为空,使用它,否则使用”
发布时间:2020-12-16 20:19:42 所属栏目:百科 来源:网络整理
导读:我有以下代码: url = file.s3_url.blank? ? file.url : file.s3_url 有更短的写法吗? 谢谢! 解决方法 那么你可以在任何文件中写一个方法(比如说S3File): class S3File def real_url self.s3_url.blank? ? self.url : self.s3_url end #...end 那么它真的
我有以下代码:
url = file.s3_url.blank? ? file.url : file.s3_url 有更短的写法吗? 谢谢! 解决方法
那么你可以在任何文件中写一个方法(比如说S3File):
class S3File def real_url self.s3_url.blank? ? self.url : self.s3_url end #... end 那么它真的很简单: url = file.real_url 正如@tokland所说,你可以使用补丁对象来使用or_if方法,这将像下面这样实现: class Object def or_if(method,val = nil) self.send(method) ? (block_given? ? yield : val) : self end end 这样,你可以这样做: url = file.s3_url.or_if(:blank?) { file.url } 或这个: url = file.s3_url.or_if(:blank?,file.url) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |