我正在学习轨道上的ruby的基础知识,我想做一些简单的查询,但我有一个疑问:
我将拥有这些模型:
class Client < ActiveRecord::Base
has_one :address
has_many :orders
has_and_belongs_to_many :roles
end
class Address < ActiveRecord::Base
belongs_to :client
end
class Order < ActiveRecord::Base
belongs_to :client, counter_cache: true
end
class Role < ActiveRecord::Base
has_and_belongs_to_many :clients
end
现在,我将使用scaffold生成所有内容,我想知道是否必须直接将外键放在脚手架中,例如:
rails生成脚手架地址街:字符串编号:整数client_id:整数
或者当我创建这些关联然后迁移我的数据库时,它们将是隐式的吗?
我不知道我是否以最好的方式解释自己。
由于
答案 0 :(得分:10)
client_id
或对客户模型的引用,例如:
rails generate scaffold Address street:string number:integer client_id:integer:index
或
rails generate scaffold Address street:string number:integer client:references
答案 1 :(得分:0)
或者,在 rails 4 中,你可以这样使用belongs_to:
假设您的应用程序中有用户模型
rails g scaffold comment belongs_to:user text:string
它会在您的migrate文件夹中生成该类:
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :text
t.belongs_to :user, index: true, foreign_key: true
t.timestamps null: false
end
end
end
您应该执行rake db:migrate
然后,此命令将 user_id 属性创建为数据库表中的索引列。