加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读