为什么 Rails 忽略我的 user_id 字段?

发布于 2024-09-24 02:08:09 字数 541 浏览 8 评论 0原文

我尝试在 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 列。这里发生了什么事?

I tried creating a DB migration in Rails that looked something like this:

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

Looking at the resulting .rb file, sure enough, I saw everything I'd entered:

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

But after running rake db:migrate and inspecting my database, I see that no user_id column was created. What happened, here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

做个ˇ局外人 2024-10-01 02:08:09

因为它应该是 t.integer,而不是 t.int。请参阅文档了解更多详细信息

add_column(table_name, column_name, type, options):向名为 table_name 的表添加一个新列,命名为 column_name 指定为 1以下类型::string:text:integer:float:decimal:日期时间:时间戳:时间:日期:二进制:布尔值

Because it should be t.integer, not t.int. See the docs for more details:

add_column(table_name, column_name, type, options): Adds a new column to the table called table_name named column_name specified to be one of the following types: :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean.

傲世九天 2024-10-01 02:08:09

您还可以使用:

t.references :user

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

You can also use:

t.references :user

and it will create an integer field called user_id. I personally prefer this method because it's referencing a foreign key.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文