代码之家  ›  专栏  ›  技术社区  ›  Dan Tao

为什么Rails会忽略我的用户ID字段?

  •  0
  • Dan Tao  · 技术社区  · 14 年前

    我尝试在Rails中创建一个类似这样的数据库迁移:

    ruby script/generate scaffold post user_id:int title:string content:text
    

    查看生成的.rb文件,我看到了输入的所有内容:

    class CreatePosts < ActiveRecord::Migration
      def self.up
        create_table :posts do |t|
          t.int :user_id # there it is: user_id
          t.string :title
          t.text :content
    
          t.timestamps
        end
      end
    
      def self.down
        drop_table :posts
      end
    end
    

    但跑步后 rake db:migrate 检查我的数据库,我发现没有 user_id 列已创建。怎么了,这里?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Skilldrick    14 年前

    因为它应该是 t.integer 不是 t.int . 查看 docs for more details :

    add_column(table_name, column_name, type, options) :向名为 table_name 命名 column_name 指定为以下类型之一: :string , :text , :integer , :float , :decimal , :datetime , :timestamp , :time , :date , :binary , :boolean .

        2
  •  3
  •   Peter Brown    14 年前

    您还可以使用:

    t.references :user
    

    它将创建一个名为user_id的整数字段。我个人更喜欢这个方法,因为它引用的是一个外键。