[英]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.