2012-11-23 31 views
0

我有設計的身份驗證,我有confirmable在設計用戶模型,但我希望這是基於我發送的數據是可選的。在用戶模型中有type field,如果我發送value 1類型,那麼應該存在confirmable,並且如果value is 2那麼不應該是可確認的,並且帳戶應該自動激活。我怎樣才能做到這一點?請幫幫我。在此先感謝如何在設計中將可確認更改爲可選項?

回答

1

我想你可以使用skip_confirmation!方法在這裏。所以它不會向用戶發送確認郵件並且會被確認。

before_save :require_confirmation, :on => :create 

def require_confirmation 
    self.skip_confirmation! if field == "value_2" 
end 
+0

如果我發送值2,那麼它跳過確認並讓用戶登錄,但如果值爲1,則它顯示錯誤爲未定義的方法'confirmation_url'for#<#:0x000001038ce4f8>,並且未創建用戶。如果價值= 1時應該發送電子郵件,我該怎麼辦? – logesh

+0

我想..這似乎devise scoped_views相關的錯誤。只需做一件事情就可以備份你的項目,並嘗試這一步驟1:在「config/initializers/devise.rb」中設置「config.scoped_views = true」。第2步:然後使用「rails generate devise:views users」生成範圍視圖。 – Santosh

+0

非常感謝。它現在起作用了,但是請你告訴我你爲什麼要這麼做。 – logesh

2

你可以在你的用戶模型中做出這樣的事情。

before_save :confirm_user, on: :create 

def confirm_user 
    self.confirm! if field.eql?("value_1") 
end 

關鍵是你檢查你的價值,如果你想在不確認創建用戶,比你只用色器件confirm!方法確認其手。

+0

謝謝。你能否詳細解釋我一下。我的用戶模型中有「設計:可確認」。這種方法如何限制可確認 – logesh

+0

'confirm!'方法通過將'confir_at'字段設置爲實際時間來確認用戶。如果用戶已經確認,則向電子郵件字段添加錯誤。 –

+0

我使用過這樣before_save:skip_confirmation !,:on =>:創建 def skip_confirmation! self.confirmed_at = Time.now if type ==「value 2」 如果type ==「value 2」結束它不發送郵件給用戶,但是如果值爲1,則顯示錯誤爲未定義方法'confirmation_url'for#< #<類別:0x000001038d7c60>:0x000001038ce4f8>。我能做什麼? – logesh

相關問題