Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 rails 4如何使用外键和主键_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 rails 4如何使用外键和主键

Ruby on rails 4 rails 4如何使用外键和主键,ruby-on-rails-4,Ruby On Rails 4,如何设置以下关联: 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 :icd

如何设置以下关联:

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
class Midatum:diagn1
属于:icd9,:foreing\u key=>:diagn2
属于:icd9,:foreing\u key=>:diagn3
结束
类icd9:icd9,:primary\u key=>:icd9
结束
这是行不通的。这对某人来说可能是显而易见的,但对我来说不是。数据库
是一个遗留数据库,只读。我需要建立这个assoc来处理数据。

这个答案来自Rails专家,它确实解决了我的问题。我张贴它的情况下,其他人有同样的问题

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=中腰第一 m、 icd9_a m、 icd9_b m、 icd9_c

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

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
 self.primary_key = :icd9