Ruby on Rails生成模型字段:type - 字段的选项有哪些:type?

时间:2010-12-08 04:50:23

标签: ruby-on-rails generator rails-activerecord

我正在尝试生成新模型并忘记引用其他模型ID的语法。我自己查一下,但在我所有的Ruby on Rails文档链接中,我都没有想到如何找到最终的来源。

$ rails g model Item name:string description:text(此处为reference:productreferences:product)。但更好的问题是 我将来如何轻易地寻找这种愚蠢的行为?

注意:我学到了很难的方法,如果我错误地输入其中一个选项并运行我的迁移,那么Ruby on Rails将完全搞砸我的数据库... rake db:rollback这种搞砸是无能为力的。我确定我只是不理解某些东西,但在我做之前...... rails g model返回的“详细”信息仍让我感到搔痒......

9 个答案:

答案 0 :(得分:468)

:primary_key, :string, :text, :integer, :float, :decimal, :datetime, :timestamp,
:time, :date, :binary, :boolean, :references

请参阅table definitions部分。

答案 1 :(得分:186)

要创建引用其他模型的模型,请使用Ruby on Rails模型生成器:

$ rails g model wheel car:references

产生 app / models / wheel.rb

class Wheel < ActiveRecord::Base
  belongs_to :car
end

并添加以下迁移:

class CreateWheels < ActiveRecord::Migration
  def self.up
    create_table :wheels do |t|
      t.references :car

      t.timestamps
    end
  end

  def self.down
    drop_table :wheels
  end
end

运行迁移时,以下内容最终会出现在 db / schema.rb 中:

$ rake db:migrate

create_table "wheels", :force => true do |t|
  t.integer  "car_id"
  t.datetime "created_at"
  t.datetime "updated_at"
end

至于文档,rails生成器的起点是Ruby on Rails: A Guide to The Rails Command Line,它指向API Documentation以获取有关可用字段类型的更多信息。

答案 2 :(得分:7)

$ rails g model Item name:string description:text product:references

我也发现指南难以使用。容易理解,但很难找到我想要的东西。

另外,我有临时项目,我运行rails generate命令。然后,一旦我让他们工作,我就在我的真实项目上运行它。

上述代码的参考:http://guides.rubyonrails.org/getting_started.html#associating-models

答案 3 :(得分:3)

如果你想要了解Ruby on Rails中的基本内容,

http://guides.rubyonrails.org应该是一个很好的网站。

以下是生成它们时关联模型的链接: http://guides.rubyonrails.org/getting_started.html#associating-models

答案 4 :(得分:3)

请记住在编写此命令时不要将文本大写。 例如:

写下:

rails g model product title:string description:text image_url:string price:decimal

不写:

rails g Model product title:string description:text image_url:string price:decimal

至少这对我来说是一个问题。

答案 5 :(得分:1)

$ rails g模型项目名称:字符串描述:文本

您忘记将产品参考添加到Item了吗?

要将产品引用添加到Item模型,只需执行以下操作

$ rails g迁移AddProductToItems产品:引用 $ rails db:migrate

然后它将像这样生成

class AddProductToItems < ActiveRecord::Migration[5.2]
  def change
    add_reference :items, :product, foreign_key: true
  end
end

最后将产品引用添加到商品模型

答案 6 :(得分:0)

我有同样的问题,但我的代码有点不同。

def new @project = Project.new end

我的表格看起来像这样:

<%= form_for @project do |f| %> and so on.... <% end %>

这是完全正确的,所以我不知道如何解决这个问题。

最后,只需在url: { projects: :create }为我工作后添加<%= form-for @project

答案 7 :(得分:0)

在ROR中创建引用其他模型非常简单。

rails g model项目名称:字符串描述:文本产品:引用

此代码将在Item表中添加“ product_id”列

答案 8 :(得分:0)

创建模型时,您可以提及很多数据类型,例如: :primary_key,:string,:text,:integer,:float,:decimal,:datetime,:timestamp, :time,:date,:binary,:boolean,:references

语法: field_type:数据类型