我想通過表單獲取某些用戶數據,然後使用User.rb方法分析一些數據。如果數據返回true,我想創建一個新的Hipster記錄。Rails:創建新的用戶記錄,分析數據,然後只在數據返回true時創建新的Hipster
我只有想保存時髦記錄,而不是用戶記錄。通用用戶記錄對我來說毫無用處。
最簡單的方法是在保存之前創建一個Hipster模型並創建一堆自定義驗證。這裏是我當前的代碼:
Hipster.rb
validate :hipster_status, :on => :create
def hipster_status
has_a_bike?
has_a_moustache?
has_skinny_jeans?
unless hipster?
self.errors.add("aint a hipster")
end
end
def has_a_bike?
# run some code to see if User has a bike
end
def has_a_moustache?
# run some code to see if User has a moustache
end
def has_skinny_jeans?
# run some code to see if User has skinny jeans
end
def hipster?
has_a_bike? && has_a_moustache? && has_skinny_jeans?
end
但感覺錯誤必須在行家模型這些方法。調用hipster.hipster?
感覺很奇怪我覺得我應該創建一個臨時用戶,如果它返回true,則調用user.hipster?
,然後創建一個Hipster(甚至不保存用戶)。
但我很難想象新的架構。當用戶訪問用戶#新頁面時,他們將表單發佈到用戶#創建?但我不想創建一個用戶。是否可以發佈到用戶#創建而不打算創建記錄?
或者我只是超越它,應該堅持到第一個版本?
時髦是一個具有某些屬性的用戶,所以我並不真正相信你需要Hipster類。我不知道你的模型有什麼用例,但是一種選擇是創建一個'Accessory'模型來將不同的用戶配件存儲在has_many關聯中。像自行車,小鬍子,skinny_jeans這樣的東西都可以作爲配件存儲,並且可以隨時添加新的配件,因此可以很好地擴展。你可以創建一個用戶並添加/檢查這些附件,以確定是否有user.is_hipster?或user.is_geek?或user.is_android_fanboy?等 – Rog