【发布时间】:2012-08-29 18:30:37
【问题描述】:
我的背景
我 am/是一名 PHP 开发人员。已经15年了。 Ruby 对我来说是新的(我的新挑战)!
当前设置
我正在使用带有用户模型的设计。
导轨:3.2.1
设计:2.1.2
用例
当用户注册时(通过 Devise 控制器),我想创建用户记录,但也自动创建一个 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
请求帮助
有什么建议吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3