首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails 4如何使用外键和主键

rails 4如何使用外键和主键
EN

Stack Overflow用户
提问于 2013-09-03 07:34:48
回答 1查看 118关注 0票数 0

如何设置以下关联:

代码语言:javascript
复制
class Midatum < ActiveRecord::Base
 # ..., diagn1, diagn2, diagn3
 # sample data:
 #  ..., "0123", nil   ,"0124"
 #  ..., "0123", nil   ,"0124"
 #  ..., "0123", "1123", nil  
 belongs_to :icd9, :foreing_key => :diagn1
 belongs_to :icd9, :foreing_key => :diagn2
 belongs_to :icd9, :foreing_key => :diagn3
end

class icd9 < ActiveRecord::Base
 # icd9, description 
 # sample data:(unique)
 #"0123", "some text"
 #"0124", "some other text"
 #"1123", "description text"
 #"1133", "description text"
 has_many :midata, :foreing_key => :icd9, :primary_key => :icd9
end

这不起作用。这对某些人来说可能是显而易见的,但对我来说就不是了。该数据库是传统数据库和只读数据库。我需要建立这个协会,以便能够与数据一起工作。

EN

回答 1

Stack Overflow用户

发布于 2013-09-11 01:51:46

这个答案来自一位Rails专家,它确实解决了我的问题。我把它贴出来,以防别人也有同样的问题。

代码语言:javascript
复制
belongs_to :icd9_a, :foreign_key => :diagn1, :class_name => "Icd9"
belongs_to :icd9_b, :foreign_key => :diagn2, :class_name => "Icd9"
belongs_to :icd9_c, :foreign_key => :diagn3, :class_name => "Icd9"

但这意味着您需要使用所有三种方法来查询关联:m= Midatum.first m.icd9_a m.icd9_b m.icd9_c

同样,在Icd9类中,您将需要三个具有唯一名称的独立关联:

代码语言:javascript
复制
class Icd9 < ActiveRecord::Base
 self.primary_key = :icd9

 has_many :midata_a, :foreign_key => :diagn1, :class_name => "Midatum"
 has_many :midata_b, :foreign_key => :diagn2, :class_name => "Midatum"
 has_many :midata_c, :foreign_key => :diagn3, :class_name => "Midatum"

end

另请注意,由于icd9表没有'id‘列,但使用'icd9’列作为主键,因此您需要像我所做的那样设置它:

代码语言:javascript
复制
 self.primary_key = :icd9
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18582074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档