好吧我有一個相當奇怪的場景,我不知道如何處理,所以請耐心等待,因爲我試圖向你解釋。驗證包含不工作創建
我有以下模型。
class User < ActiveRecord::Base
Roles = { pending: 'pending_user', role2: 'role2', etc: 'etc' }
attr_accessible :role
validates :role, inclusion: {in: Roles.values}
before_create :add_pendng_role #Set user role to Roles[:pending]
end
現在的問題是,當第一次創建一個記錄,這個驗證失敗!例如,在我的控制,我有以下代碼:
class UsersController < ActionController::Base
@user = User.new params[:user]
if @user.save # --------------- ALWAYS FAILS -------------------------------
#do something
else
#do something else
end
end
現在我認爲失敗的原因是因爲一個角色只能加入before_create
的驗證已通過,之後被調用。現在我知道我不能代替的before_create :add_role
與before_validation :add_role
因爲我認爲它會在每次驗證完成後添加角色。我不能這樣做的原因是因爲用戶角色將在應用程序中發生變化,並且我不想在每次對用戶進行驗證時重置角色。
任何線索我如何解決這個問題?
+1 - http://api.rubyonr ails.org/classes/ActiveRecord/Callbacks.html按順序列出回調事件,遞交參考 – house9 2013-03-03 22:38:55
對不起,我錯過了參考文獻!謝謝你所有的答案 – user1000232 2013-03-03 22:40:57