2010-12-01 45 views
0
create! do |success, failure|  
     success.html { redirect_to admin_blogs_path } 
    end 

好像是做了很多,但它在哪里....是它的轨道这是什么导轨?

+0

你可以提供一些有关上下文的提示吗?在哪个文件中,如果有这样的文件,类名是什么等等。另外,如果你让你的标题更具描述性,它会更好。就像“Rails中的create!block是什么?”。给我们提问以回答。不是谜语。 – edgerunner 2010-12-01 21:02:04

回答

3

假设这是被称为ActiveRecord模型的环境的一部分,但这并不似乎是核心。 create!的功能是成功创建记录或在发生故障时抛出异常。因此,失败块将不会执行。

它可能是一个ActionController实例使用的ActiveRecord对象的包装,并相应地处理状态。你可能想看看这个方法在哪里定义,以便更好地了解它在做什么。

一个追查神秘方法的方法是这样的:

raise method(:create!).source_location.inspect 

你会拿到列出源文件和源行,如果它可以解决一个数组。

+0

我得到这个NoMethodError(未定义的方法`source_location'为#<方法:0x7f137e88f890>): app/controllers/admin/blogs_controller.rb:12:在`create' /usr/lib/ruby/gems/1.8/gems /compass-0.10.0.rc1/lib/compass/app_integration/rails/actionpack2/action_controller.rb:7:in`process' /home/ubuntu/.bundler/ruby/1.8/client_side_validations-8117b24ce10b/lib/client_side_validations。 rb:34:在`调用' – Trace 2010-12-01 21:09:35

2

事实上,正如马特的评论指出的那样,此功能由Jose Valim的inherited_resources宝石提供。这个宝石为人们提供了一种通过将所有标准废话抽象成宝石来大幅减少CRUD控制器中的重复的方法。