Renaming the created_at, updated_at columns of ActiveRecord/Rails

前端 未结 10 646
囚心锁ツ
囚心锁ツ 2020-11-28 07:02

I want to rename the timestamp columns defined in timestamp.rb . Can the methods of timestamp.rb be overwritten? And what has to be done in the application that the module w

10条回答
  •  攒了一身酷
    2020-11-28 07:40

    This can be done via just over writing the ActiveRecord::Timestamp module methods. Not actually overwriting the entire module. I need to to accomplish this same goal as I am working with a legacy database. I am on rails 3 and I have started following a methodology of how to monkey patch my code with over writing rails functionality.

    I first create the base project that I am working with and create a file called that in the initializers. In this case I created active_record.rb. And within the file I put code to override two methods that controlled the timestamp. Below is the sample of my code:

    module ActiveRecord
        module Timestamp      
          private
          def timestamp_attributes_for_update #:nodoc:
            ["updated_at", "updated_on", "modified_at"]
          end
          def timestamp_attributes_for_create #:nodoc:
            ["created_at", "created_on"]
          end      
        end
      end
    

    NOTE: I would also like to mention that this sort of monkey patching to get things to work is frowned upon and may break on upgrades so be careful and be fully aware of what it is that you want to do.

    Updates:

    • Change timestamp column names from symbol to string per api change. Thanks Techbrunch for bringing this API change to my attention.

提交回复
热议问题