2013-04-29 61 views
0

我有兩個字段,first_name和brand_name。用戶在登錄時輸入first_name。如果他是所有者,則輸入brand_name。當用戶創建一個帳戶時,brand_name默認等於first_name。用戶可以稍後更改它。Rails:將值分配給模型中的字段

爲此,我在用戶模式寫了這個方法,

def brand_name 
    first_name 
end 

但它設置BRAND_NAME到FIRST_NAME雖然用戶進入不同的BRAND_NAME。我試圖做這樣:

def brand_name 
    if brand_name.nil? 
     first_name 
    else 
     brand_name 
    end 
end 

,但給無差錯SystemStackError:

stack level too deep 

可以如何做到這一點任何人幫助嗎?

回答

4

您的方法正在調用自己,這會導致無限遞歸。重寫你的方法,如下所示:

def brand_name 
    self[:brand_name].present? ? self[:brand_name] : first_name 
end 
+0

如果brand_name爲空,它不會取第一個名稱。如果品牌名稱存在,它會顯示brand_name。否則什麼都不打印。 – user2206724 2013-04-30 06:20:35

+0

這個問題並不完全清楚,但我繼續並更新了我的答案,以處理品牌名稱設置爲空字符串的情況。你可能要考慮驗證brand_name的長度> 0。 – davogones 2013-04-30 06:26:16

+0

哦,對不起,沒辦法解釋。感謝編輯問題!解決方案正在工作:-)有人懷疑,'自我'是必要的嗎?沒有得到如何使用它以及何時使用。 – user2206724 2013-04-30 06:36:04

相關問題