解决方法
那么你可以在任何文件中写一个方法(比如说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)