首页 文章

Ruby Rails - 使用created_at列创建表

提问于
浏览
6

Ruby on rails具有t.timestamps方法,该方法创建两列,created_at和updated_at . 我怎样才能创建created_at列?

这很有效

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.timestamps null: false
    end
  end
end

这两个我想工作但失败了

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.created_at null: false
    end
  end
end

class CreateLinesSources < ActiveRecord::Migration
  def change
    create_table :lines_sources do |t|
      t.timestamps null: false
      remove_column updated_at
    end
  end
end

3 回答

  • 1

    两次尝试都没问题,但包含语法错误 .

    第一次尝试的问题是t . 是基于数据类型而不是列名 .

    class CreateLinesSources < ActiveRecord::Migration
      def change
        create_table :lines_sources do |t|
          t.datetime :created_at, null: false
        end
      end
    end
    

    第二次尝试的问题是 remove_columncreate_table 块内不起作用 . 您可以将其移出块外,并提供正确的语法来删除列 .

    class CreateLinesSources < ActiveRecord::Migration
      def change
        create_table :lines_sources do |t|
          t.timestamps null: false
        end
        remove_column :line_sources, :updated_at, :datetime
      end
    end
    
  • 5
    t.datetime :created_at, null: false
    

    就像任何其他专栏一样 . 由于列名,Rails仍然会处理魔术更新 .

  • 1

    你可以做:

    def change
      create_table :lines_sources do |t|
        t.datetime :created_at, null: false
      end
    end
    

相关问题