2014-05-03 50 views
0

在Ruby on Rails中,如何创建除主键以外的外键引用字段的关系?如何在迁移或模型课中做到这一点?我正在使用MySQL。Ruby on Rails - 主键以外的参考索引的外键

感谢,

编辑:比方说,我有两个表A和B在B中,我有一个域名为名称,在一个我有b_name。如何指定

+0

你想要一个自定义的'外键'? – Pavan

+0

我已经用示例 – sadaf

+0

更新了我的问题,如果我没有错,所有示例都告诉我如何将b_name指定为外键。我如何让ruby引用'name'而不是主键。是通过指定:reference =>'b_name'? – sadaf

回答

2

可如果你没有指定foreign_key选项Model水平

class A < ActiveRecord::Base 

    belongs_to :B, foreign_key: 'some_other_column' 

end 

内将其通过foreign_key选项,Rails默认查找B_id

3

您可以设置列名这是您的表像这样的外键:以上协会说

Class ModelA < ActiveRecord::Base 
    has_many :models, foreign_key: 'another_id' 

,型号表有一个称为“another_id”列。

了解更多关于各种选项in the docs

3

foreign_key arg是你所需要的,由pavanemaillenin提及,但是,我想强调的是,为了得到它的工作,我发现你必须把它应用到了联想的两部分:

#app/models/user.rb 
Class User < ActiveRecord::Base 
    has_many :posts, foreign_key: "post" 
end 

#app/models/post.rb 
Class Post < ActiveRecord::Base 
    belongs_to :user, foreign_key: "post" 
end 

要在迁移/ dB参考,你真的只是用另一个替换____id列。仍然会是一个整数等,除了它会有不同的名称

+1

我upvoted另外两个答案btw –

+0

我的猜测是正确的:) – Pavan

+1

你生长良好!我在这里看到你很多 - 很高兴看到你冒着很多人喜欢给予的降价! –