在我的模型User
中,已經存在一個自動遞增的id
列。現在我打算給用戶一個唯一的名字。基於兩個字段查詢導軌模型,其中一個有時爲空
現在,用戶將不會在註冊過程中要求,所以在默認情況下,我想列回"user" + id
時調用像
user.profile_name #=> should return "user#{user.id}" if nil
我不想要複製數據,所以我想保留字段nil
,直到用戶輸入一個。
所以,我想創建一個自定義函數(或重寫如果可能的話)
# model User.rb
def get_identifier
profile_name ? profile_name : "user#{id}"
end
而且使用where
找到用戶
id, user = params[:identifier], nil
if id[0..3] == "user"
user = User.find_by_id(id[3..-1].to_num)
else
user = User.find_by profile_name: id
,但這似乎並不是一個軌道辦法。即使在查詢時,我也必須處理這兩種情況。
有沒有什麼辦法可以簡化這個我在失蹤的Rails?否則可以改進目前的方法(除了將代碼重構爲方法)?
P.S問題用我正在使用的版本進行適當標記。 Ruby版本 - 2.1.5
如果有人可以更好地標題,請自由編輯。 –