class Details < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :details
end
我期待user_id作为详细信息表中的外键列,但没有创建任何解决方案?
答案 0 :(得分:0)
你必须自己创建,rails不会自动创建它。尝试运行这样的迁移: -
class AddUserIdToDetais < ActiveRecord::Migration
def change
add_column :details, :user_id, :integer
end
end
答案 1 :(得分:0)
外键始终位于belongs_to
关联的表/模型上。您需要通过创建迁移手动添加外键列。
$ rails g migration add_user_id_to_details user:references
这将导致这样的迁移:
class AddUserIdToDetais < ActiveRecord::Migration
def change
add_reference :details, :user
end
end
相当于:
class AddUserIdToDetais < ActiveRecord::Migration
def change
add_column :details, :user_id, :integer
end
end
根据您的查询,您应该考虑添加索引(引用迁移应该自动建议)以提高查询性能。
更新:使用关联
如果一切设置正确,您可以通过用户记录创建详细记录,以自动设置user_id
。
user = User.first
user.create_details(name: 'blub') # the create_association method is generated for a has_one association
查看has_one
association或Rails Guides中Rails API docs创建的所有方法。