2010-06-04 48 views
0

第二条线和第三条线可以组合成一行,并希望能保存一个有价值的东西吗?红宝石单线这可能吗?

def self.date_format 
    record = find_by_key('strftime') 
    record ? record.value : "%Y-%b-%d' 
end 

Config模型上面的函数试图通过一键获取数据库记录,返回默认如果在数据库中找不到。

如果可以写入命名范围,效果会更好。由于

回答

4

根据要求。

还没有人提到try,这是完美的这种情况:

value = find_by_key('strftime').try(:value) || "%Y-%b-%d"

+1

尽管'try'没有在ruby中定义,所以你必须添加'require'active-support'' – 2010-06-04 03:03:17

+0

问题被标记为'named-scope'和'activemodel',因此被假定。 – x1a4 2010-06-04 03:09:50

0

是否

value = find_by_key('strftime') || "%Y-%b-%d" 

为你工作?

+0

对不起,返回应该是'reocrd.value',而不是记录 – ohho 2010-06-04 02:42:26

+1

它缺少'.value'调用,但可以将其更改为'find_by_key('strftime')。 “%Y-%b-%d”'保持足够的一条线。 – x1a4 2010-06-04 02:44:35

+0

@霍勒斯:对,很抱歉,误解了代码。 – 2010-06-04 02:45:22

0

您是否需要分配一个“值”变量?如果没有...

def self.date_format 
    find_by_key('strftime') || "%Y-%b-%d" 
end 
1

你可以使用:

(find_by_key('strftime').value rescue nil) || "%Y-%b-%d" 

虽然使用异常是不是很有效。