【发布时间】:2015-06-07 06:54:52
【问题描述】:
我有两张桌子:
- 用户
- 帖子
一个帖子属于一个用户,一个帖子可以授予另一个用户。如何在 Rails 模型中映射此关联?
这些是我当前的关联,它们不起作用:
class Post < ActiveRecord::Base
belongs_to :user
has_one :awarded_user, :class_name => 'User', :foreign_key => 'awarded_to_user_id'
当我尝试访问 post.awarded_user 时,我在 rails 控制台中收到此错误:
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'users.awarded_to_user_id' in 'where clause': SELECT `users`.* FROM `users` WHERE `users`.`awarded_to_user_id` = 8 LIMIT 1
查询搜索user.awarded_to_user_id 但是,我需要它在posts 中搜索以变为posts.awarded_to_user_id。
我该如何解决这个问题?
【问题讨论】:
-
请看any of these是否有帮助。如果他们这样做了,请点击“关闭”告诉系统这个问题与有帮助的问题重复。
-
@WayneConrad 不,他们没有帮助。它们都使用分配的
:class_name中的相同:class_name和:foreign_key。我想要的是:class_name应该是相同的,但:foreign_key不应该来自分配的:class_name,而是来自posts模型。 -
从概念上讲,外键
awarded_to_user_id必须在users表中,因为belongs_to是用户,而has_one是一个帖子。对于您所说的,您必须还原场景:Post belongs_to :awarded_user和User has_one :awarded_post -
@ArslanAli 你能用代码发布答案吗?作为一个初学者,理解这一点真的很复杂。 :)
标签: ruby-on-rails ruby foreign-keys associations