我們可以調用一個方法「validate_uniqueness」呼叫在validate_uniqueness的方法在Rails的
我有一個名爲「PROFILE_URL」,這應該是所有用戶的唯一列。我正在檢查它的唯一性使用
validates_uniqueness_of :profile_url, message: "has already been taken"
我希望這個重定向到一個方法,如果這個驗證命中發生。是否有可能在軌道上的紅寶石分配一個方法與此驗證唯一性線。
我們可以調用一個方法「validate_uniqueness」呼叫在validate_uniqueness的方法在Rails的
我有一個名爲「PROFILE_URL」,這應該是所有用戶的唯一列。我正在檢查它的唯一性使用
validates_uniqueness_of :profile_url, message: "has already been taken"
我希望這個重定向到一個方法,如果這個驗證命中發生。是否有可能在軌道上的紅寶石分配一個方法與此驗證唯一性線。
validates_uniqueness_of :profile_url, message: "has already been taken", if: :method_name?
只有當方法返回true時,此驗證纔會觸發。
Huuh。你看錯了像我這樣的問題..:P OP想要相反.. –
你可以檢查控制器內部,如果錯誤散列包含鍵「profile_url」,然後重定向到你想要的方法。 –
您可能需要使用自定義驗證這樣的:
class User
validate :verify_unique_profile_url
def verify_unique_profile_url
if User.exists? profile_url: profile_url
errors.add :profile_url, 'has already been taken'
end
end
end
更多信息,可以發現here。
是的。自定義驗證是這裏的好建議。 –
如果現有用戶嘗試編輯其設置/ proile,則您的條件將不起作用。它應該是'User.exists?(profile_url:profile_url)&& self.new_record?' – Surya
@Surya當用戶更新'profile_url'時,該驗證應該可能運行。在這種情況下,你的建議將'跳過'驗證。你可能的意思是應該添加一個檢查來查看profile_url是否存在於你自己的用戶記錄中。 – newmediafreak
重定向到一個方法?哪裏?在控制器?在模型中? – Surya
in model .............. –
不可以。如果驗證失敗,則無法重定向到方法。但是,您可以使用'after_validation'回調並檢查對象是否有錯誤。 – Surya