我的背景
I am /是一個PHP開發者。已經有15年了。 Ruby對我來說是新的(我的新挑戰)!設計與相關記錄驗證
當前設置
我正在使用Devise和用戶模型。
的Rails 3.2.1
設計:2.1.2
使用案例
當用戶註冊(打算直通設計控制器),我要創建的用戶記錄,但也富自動記錄。我創建了一個處理創建Foo記錄的after_create。
Class User < ActiveRecord::Base
after_create :make_foo
def make_foo
Foo.create(
:name => name,
:user_id => id
)
end
end
Class Foo < ActiveRecord::Base
belongs_to :user
end
症狀
我在那裏沒有被創建富記錄時出現問題(例如驗證),那麼用戶記錄仍然創造了(我不希望出現這種情況)。我在after_create中添加了一個Raise Exception,它回滾了用戶創建。
但是,我寧願一些不錯的錯誤處理,而不是拋出異常。現在,我得到一個500錯誤頁面與該例外。 我希望表單可以再次顯示失敗的原因。
Class User < ActiveRecord::Base
after_create :make_foo
def make_foo
foo = Foo.create(
:name => name,
:user_id => id
)
if !foo.valid?
raise Exception.new('Foo creation failed.')
end
end
end
請求幫助
有什麼建議?
感謝您花時間回答。也許它不清楚,但創建Foo記錄的代碼不在控制器中,而是在Model中。在模型中放置Session和重定向以及Flash邏輯並不好。它通常在控制器內部。控制器不是我的,而是Devise的控制器。我希望這有助於澄清我的情況。 – roychri