覆盖create以进行调试(不起作用)

时间:2014-06-13 05:48:04

标签: ruby-on-rails ruby

调试方法创建和创建!对于模型我做了这个:

class MyModel < ActiveRecord::Base
  def create
    puts "----MyModel.rb create"
    super.create
  end

  def create!
    puts "----MyModel.rb create!"
    super.create!
  end

end

但是当我运行rake db:seed时,我在终端中看不到这些调试消息。当然,MyModel的实例已经创建。

为什么?

1 个答案:

答案 0 :(得分:4)

  1. 这些方法应该是类方法

  2. 它接受一些params

  3. 这对我有用

    def self.create(attributes = nil, &block)
        p "======================="
        p 'aaaaaaaaaaa'
        p "======================="
        super
      end
    

    在控制台

    > User.create(email: 'aaa')
    "======================="
    "aaaaaaaaaaa"
    "======================="
       (0.2ms)  BEGIN
      User Exists (1.3ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" = 'aaa' LIMIT 1
       (0.3ms)  ROLLBACK
    => #<User id: nil, email: "aaa",...