就是有两个表,一个 user 和一个 prize,然后两个表已经关联了,想在查 user 表的时候能看到 prize 表的 name,但是因为 prize 表的 id 和 prize_id 是不对应的,所以
user.find(1).prize.prize_name
得到的是 id 等于 1 的而不是 prize_id 等于 1 的,如果要让 user 表查到的 prize_id 对应上 prize 表上 prize_id 要怎么办
class User
belongs_to :prize, primary_key: 'prize_id'
end
隐约觉得是个 X-Y 问题,楼主你原本想干嘛?
这特么是个多对多关联吧,看 has_and_belongs_to_many
http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association
#5 楼 @satoshigi 多对多关联,has_and_belongs_to_many,prize 表只要 name 和 id,再加一个关联表 users_prizes ( user_id, prize_id ),users 表也去掉 prize_id。
#7 楼 @satoshigi 意思是顶楼的 prize 表已经是关联表吗?补充一些详细的业务描述和数据描述,现在看不明白,为什么 prize 表里面同时有 id 和 prize_id,prize_id 指向哪?
#9 楼 @satoshigi 我觉得礼物的 id 是不变的啊,比如有 ID 为 1~10 的物品,今天允许选 1~6,明天允许选 5~9,但是礼物的 id 没变啊。
#11 楼 @satoshigi 从数据管理角度,这是两个物品了。一般电商网站会保留所有商品信息和订单信息,商品条目只会软删除,你需要的 prize 表,比较像订单。