我的背景
我是/曾经是 PHP 开发人员。已经15年了。Ruby 对我来说是新的(我的新挑战)!
当前设置
我正在使用带有用户模型的设计。
Rails:3.2.1
设计:2.1.2
用例
当用户注册时(通过设计控制器),我想创建用户记录,但也自动创建一个 Foo 记录。我创建了一个 after_create 来处理 Foo 记录的创建。
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
症状
我有一个问题,当没有创建 Foo 记录(例如验证)时,仍然创建了 User 记录(我不想要那个)。我在 after_create 中添加了一个引发异常,它会回滚用户创建。
但是,我更喜欢一些不错的错误处理而不是抛出异常。现在我得到一个带有该异常的 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
请求帮助
有什么建议么?