318

我正在尝试生成一个新模型并忘记了引用另一个模型 ID 的语法。我会自己查找它,但在我所有的 Ruby on Rails 文档链接中,我还没有弄清楚如何找到最终的来源。

$ rails g model Item name:string description:text(这里是reference:productor references:product)。但更好的问题是,我将来在哪里如何轻松地寻找这种愚蠢?

注意:我已经了解到,如果我错误地输入了这些选项之一并运行我的迁移,那么 Ruby on Rails 将完全搞砸我的数据库......并且rake db:rollback对这种搞砸无能为力。我确定我只是不理解某些东西,但在我理解之前......返回的“详细”信息rails g model仍然让我抓挠......

4

8 回答 8

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

请参阅表定义部分。

于 2010-12-08T05:02:11.263 回答
191

要创建引用另一个模型的模型,请使用 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 文档以获取有关可用字段类型的更多信息。

于 2011-07-13T16:46:07.097 回答
7

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

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

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

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

于 2011-06-20T17:47:45.477 回答
3

如果您尝试了解 Ruby on Rails 中的基本内容, http: //guides.rubyonrails.org应该是一个不错的站点。

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

于 2010-12-08T04:59:29.040 回答
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

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

于 2012-08-22T14:28:34.647 回答
0

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

def new
 @project = Project.new
end

我的表格看起来像这样:

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

那是完全正确的,所以我不知道如何弄清楚。

最后,只需添加

url: { projects: :create }

<%= form-for @project ...%>

为我工作。

于 2016-10-12T02:50:06.357 回答
0

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

rails g模型项目名称:字符串描述:文本产品:参考

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

于 2019-08-28T06:44:26.353 回答
0

在创建模型时可以提及很多数据类型,例如:

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

句法:

field_type:data_type
于 2019-11-13T16:27:42.363 回答