加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在Rails 4中设置自定义字符串外键?

发布时间:2020-12-17 03:05:32 所属栏目:百科 来源:网络整理
导读:如何使用字符串foreign_key设置关联以正确设置has_one? class Pharmaceutic ActiveRecord::Base has_one :pharmaceutic_group,foreign_key: "code"endclass PharmaceuticGroup ActiveRecord::Base belongs_to :pharmaceutic,primary_key: 'code'end Pharmac
如何使用字符串foreign_key设置关联以正确设置has_one?

class Pharmaceutic < ActiveRecord::Base
  has_one :pharmaceutic_group,foreign_key: "code"
end

class PharmaceuticGroup < ActiveRecord::Base
  belongs_to :pharmaceutic,primary_key: 'code'
end

>> Pharmaceutic.last.pharmaceutic_group                                                                                        
  Pharmaceutic Load (0.3ms)  SELECT `pharmaceutics`.* FROM `pharmaceutics` ORDER BY `pharmaceutics`.`id` DESC LIMIT 1
  PharmaceuticGroup Load (0.3ms)  SELECT `pharmaceutic_groups`.* FROM `pharmaceutic_groups` WHERE `pharmaceutic_groups`.`code` = 2 ORDER BY `pharmaceutic_groups`.`id` ASC LIMIT 1
=> nil
>> Pharmaceutic
=> Pharmaceutic(id: integer,package_type: integer,group_code: string)
>> PharmaceuticGroup
=> PharmaceuticGroup(id: integer,code: string,name: string)

例如,当:Pharmaceutic有group_code:aaa和PharmaceuticGroup有代码:aaa我想得到Pharmaceutic.last.pharmaceutic_group.name => ‘AAA组名’

解决方法

我想你应该使用Pharmaceutic belongs_to:pharmaceuticalic_group和PharmaceuticGroup has_many:pharmaceuticalics,像这样:

class Pharmaceutic < ActiveRecord::Base
  belongs_to :pharmaceutic_group,foreign_key: :group_code,primary_key: :code
end

class PharmaceuticGroup < ActiveRecord::Base
  has_many :pharmaceutics,primary_key: :code
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读