class Details < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :details
end
我期待 user_id 作为详细信息表中的外键列但未创建,有什么解决方案吗?
class Details < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :details
end
我期待 user_id 作为详细信息表中的外键列但未创建,有什么解决方案吗?
您必须自己创建它,rails 不会自动创建它。尝试像这样运行迁移:-
class AddUserIdToDetais < ActiveRecord::Migration
def change
add_column :details, :user_id, :integer
end
end
外键始终在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
在Rails 指南或Rails API 文档中查看has_one
关联创建的所有方法。