繁体   English   中英

RAILS:基于非PK列的has_one关联

[英]RAILS: has_one association based on non PK column

我有以下表格:

users 
  [id | name | type]

types
  [id | title]

我需要设置一个has_one关联('users'.type =>'types'.id)。 但是,据我了解,当我写类似的东西时:

user.rb

has_one :type

它似乎在'users'.id和'types'.id之间建立了联系。 如何准确指定'users'.type =>'types'.id has_one关联?

终于找到了解决方案:

user.rb

belongs_to :type

type.rb

has_many :users, foreign_key: "type_id"

将用户表的类型列重命名为type_id

user.rb

belongs_to :of_type, class_name: 'Type', foreign_key: 'type_id'

type.rb

has_many :users

Rails控制台尝试做类似的事情

u = User.last
u.of_type

最后一行会给你键入记录

如果您不想重命名user.rb中的列,则可以将其写为

belongs_to :of_type, class_name: 'Type', foreign_key: 'type'

尝试这个

    in your user.rb 

    class User
      has_one :type, class: 'Type', foreign_key: 'type'
    end 

    in your type.rb

    class Type
      belongs_to :user
    end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM