Ruby on rails 为具有自引用的关联设置关联

Ruby on rails 为具有自引用的关联设置关联,ruby-on-rails,Ruby On Rails,我有一个用户和一个审阅者表 审阅者跟踪用户id和审阅者id 现在,我的关联设置如下: # reviewer has_one :reviewer accepts_nested_attributes_for :reviewer has_many :active_managements, class_name: 'Reviewer', foreign_key: 'reviewer_id',

我有一个用户和一个审阅者表

审阅者跟踪用户id和审阅者id

现在,我的关联设置如下:

  # reviewer
  has_one :reviewer
  accepts_nested_attributes_for :reviewer
  has_many :active_managements, class_name: 'Reviewer',
                                foreign_key: 'reviewer_id',
                                dependent: :destroy
  has_one :my_reviewer, through: :reviewer, source: :user
我试图设置的是,一个用户可以有一个审阅者,但可以审阅多个审阅者

现在我正努力做到这一点,这样我就能做到

current_user.my_reviewer.first_name
f、 ex并获取当前用户的审阅者的名字。但目前,

  has_one :my_reviewer, through: :reviewer, source: :user
你自己去吧。我认为这与来源有关。如果我尝试将其更改为:reviewer,则会出现以下错误:

Could not find the source association(s) :reviewer in model Reviewer. Try 'has_many :my_reviewer, :through => :reviewer, :source => <name>'. Is it one of user or reviewer_user?
PG::UndefinedColumn: ERROR:  column reviewers.reviewer_user_id does not exist
LINE 1: ... "users" INNER JOIN "reviewers" ON "users"."id" = "reviewers...
                                                             ^
: SELECT  "users".* FROM "users" INNER JOIN "reviewers" ON "users"."id" = "reviewers"."reviewer_user_id" WHERE "reviewers"."user_id" = $1 LIMIT 1

评论员是用户,对吗?那么,为什么不干脆去掉reviewer表并执行以下操作:

# user

has_many :reviewees, class_name: "User", foreign_key: "my_reviewer_id"
belongs_to :my_reviewer, class_name: "User"

你需要的东西很多:我想我确实有_one@ArupRakshit这只会获取对象审阅者当您有一个错误时所得到的错误:my_reviewer,through::reviewer,source::usernone,但它本身指的是用户id,而不是审阅者id。您还必须迁移:rails g migration addreviewers my\u reviewer\u id:integer