2010-06-04 77 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" 

雖然使用異常是不是很有效。