2011-06-18 24 views
2

現在我使用設計,並有兩個領域。 fname和lname。在設計用戶模型中創建FullName方法?

我希望能夠將full_name字段添加到用戶模型中。然後,用戶模型將採用full_name字段並通過分隔空間來提取fname和lname。如果有多個空間全部轉到fname並且最後一個項目是最後一個名稱,然後使用提取的fname和lname字段將其保存到用戶模型中。

這可能沒有黑客設計?

感謝

回答

3

你並不需要破解了色器件PerSay的,只是做在你的用戶模型(或任何模式你usuing爲您devise_for

class User 
    def fullname 
    self.fname << " " << self.lname 
    end 
    def fullname=(fname) 
    names = fname.split(/(.+) (.+)$/) 
    self.fname = names[0] 
    self.lname = names[1] 
    end 
end 

未經檢驗或關閉頂部我頭,但它應該是一個開始....

我不建議存放全名,只是使用它像一個輔助功能,但最多也就是你。

3

兩個當前答案的問題是,他們不處理三個(+)單詞名稱,如比利鮑勃桑頓。

'Billy Bob Thornton'.split(/(.+) (.+)$/) => ["", "Billy Bob", "Thornton"] 
'Billy Bob Thornton'.split(' ', 2)  => ["Billy", "Bob Thornton"] 

原始發佈請求除姓的全部轉到名字。所以我建議:

def full_name 
    [first_name, last_name].join(' ') 
end 

def full_name=(name) 
    elements = name.split(' ') 
    self.last_name = elements.delete(elements.last) 
    self.first_name = elements.join(" ") 
end