RAILS: has_one 基于非PK列的关联

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 association?

将用户 table 的类型列重命名为 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

终于找到了解决办法:

user.rb

belongs_to :type

type.rb

has_many :users, foreign_key: "type_id"