Rails 一表关联多个外键的问题

xautjzd · 2014年05月05日 · 最后由 rubysm 回复于 2018年02月08日 · 4043 次阅读

业务情况大致如下: 一个 model 有两个字段都是另一个名为 dropdownlist 的 model 的外键,定义如下:

belongs_to :dropdownlist, foreign_key: 'birth_place'
belongs_to :dropdownlsit, foreign_key: 'residence'

db:migrate后并没有在数据库对应表中生成 birth_place 和 residence 这两个字段,请大家给予指点。网上找了答案说是要 AddxxxRefToXXX,但是貌似这样不能自定义外键的名字

添加外键的字段应该定义到 Migration 中

#1 楼 @hlcfan 最后发现外键字段需要自己手动写到 migration 中,也可以自定义外键名称,但是最后都会在自定义的名称后边加上_id,能不能不加这个后缀?

#3 楼 @mimosa 不用 gem。

添加一个 migration

rails g migration add_birth_place_and_residence_to_model

migrattion 的 change block 里面写

add_column :table_name, :birth_place, :integer
add_column :table_name, :residence, :integer

完成。外键带 _id 是 Rails 的约定,破坏约定会增加维护者的沟通成本。

楼主要完整看看 http://guides.rubyonrails.org/migrations.html

@Rei 这种情况怎么写关联查询呢!!!在线等 急!!!!!!!!!!!!!

@Ria创建者排序:@sites.include(:ip).order("sites.name asc")

@rei更新者排序: ?????

ip 有 creator_id 和 update_user_id ip belongs_to user 我要对 ip 的创建者排序,还有更新者排序 怎么写呢? class Ip < ActiveRecord::Base belongs_to :user foreign_key [:creator_id ,:update_user_id] end 只有更新过的 ip 有更新者,没有跟新过的 ip update_user_id 为空

我刚开始学 Ruby on Rails, 请问在你们讨论的这种情况下,如何获得外键关联的对象,如:dropdownlist, user,并且访问他们 id 以外的其他字段呢?谢谢!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号