RAILS:has_one基于非PK列的关联

时间:2015-06-04 08:56:56

标签: sql ruby-on-rails associations models has-one

我有以下表格:

has_one

我需要设置一个has_one :type 关联('用户' .type =>'类型' .id)。但是,据我所知,当我写下这样的内容时:

user.rb

{{1}}

它似乎在用户' .id和'类型' .id之间建立了关系。如何准确指定'用户' .type => '类型' .id has_one association?

3 个答案:

答案 0 :(得分:1)

终于找到了解决方案:

user.rb

belongs_to :type

<强> type.rb

has_many :users, foreign_key: "type_id"

答案 1 :(得分:0)

将users表的type列重命名为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'

答案 2 :(得分:-1)

试试这个

    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