我正在尝试生成新模型并忘记引用其他模型ID的语法。我自己查一下,但在我所有的Ruby on Rails文档链接中,我都没有想到如何找到最终的来源。
$ rails g model Item name:string description:text
(此处为reference:product
或references:product
)。但更好的问题是 或 我将来如何轻易地寻找这种愚蠢的行为?
注意:我学到了很难的方法,如果我错误地输入其中一个选项并运行我的迁移,那么Ruby on Rails将完全搞砸我的数据库... rake db:rollback
这种搞砸是无能为力的。我确定我只是不理解某些东西,但在我做之前...... rails g model
返回的“详细”信息仍让我感到搔痒......
答案 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)
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:数据类型