2014-03-25 61 views
0

我在我的Author模型中有first_namelast_name字段。有時候我需要輸出全名,所以我想到了一個命名範圍:full_name導軌名爲範圍合併字段全名

我想:

scope :full_name, lambda {"#{first_name} #{last_name}"}

但是當我打電話.full_name一個作者的情況下,我得到一個未定義的錯誤消息。怎麼來的?

回答

3

範圍是使用上的關係,建立SQL查詢,例如:

scope :newest, -> { order('created_at DESC').limit(10) } 
Author.newest 
# => returns relation of author records in `created_at DESC` order and limited to 10 

相反,你需要實例方法,這就是所謂的實例:

def full_name 
    "#{first_name} #{last_name}" 
end 

author = Author.new(first_name: 'Killer', last_name: 'Pixler') 
author.full_name 
# => "Killer Pixler" 
+0

感謝這個作品很好 – Killerpixler

+0

我們假設我想驗證模型中full_name的唯一性。我怎麼做? 'validates_uniqueness_of:full_name'不起作用。一些用戶將具有相同的名字或姓氏,但全名應該是唯一的 – Killerpixler

+0

您可以這樣做:'validates_uniqueness_of:first_name,scope::last_name'。 –