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"
我有以下表格:
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"