0

新的铁轨在这里。我无法理解这个特定的活动记录关联。有人可以帮我解决这个问题。该模型如下所示:

class User < ActiveRecord::Base
  has_many :client_occurrences,
           foreign_key: "client_id",
           class_name: "Occurrence"
  has_many :requested_occurrences,
           foreign_key: "requestor_id", 
           class_name: "Occurrence"
end

它与之相关的是:

class Occurrence < ActiveRecord::Base
  belongs_to :template, autosave: true
  belongs_to :requestor, class_name: "User"
  belongs_to :client, class_name: "User"
end

我似乎无法理解这里所描绘的关联。每次看到用户模型时,我都会立即将其归类为问题,因为这是我在用户模型中读取关联的方式:

用户通过 client_occurrences 多次出现别名并将 client_id 设置为 foreign_key

这对我来说是个问题,因为 foreign_key 不在正确的表中(根据我对代码的理解)。此外,client_id 和 requestor_id 是在 Occurrence 表中找到的列。

有人可以帮忙吗?

4

2 回答 2

1

我不确定你的问题在哪里。我会说你的阅读是正确的,即:

  • User确实有很多Occurences (每个都Occurence指向User)
  • 从The is Indeed client_occurrences的角度来看,它们被别名/引用。Userforeign_keyclient_id
  • 也就是说,该Occurence表用于client_id指向User

从的角度来看Occurrence

  • 每个都Occurrence属于 a :client,这意味着字段名称将是client_id(与模型中的foreign_key子句匹配User
  • 指向的项目确实是User

我认为,令人困惑的一件事是has_many子句的顺序与相应子句的顺序不同belongs_to

于 2013-11-04T22:58:02.350 回答
0

这些是我从中收集到的业务规则:

A User can be associated with an Occurrence as a client

A User can be associated with an Occurrence as a requestor

A User can be associated to many Occurrences

An Occurrence has one requestor User, and one client User

外键在 User 模型中指定,因为它多次关联到同一个模型,否则 rails 将默认使用“user_id”作为 Occurrence 模型中的外键。

查看此链接以获取有关所有不同 ActiveRecord 关联功能的完整详细信息: Rails 指南:ActiveRecord 关联

于 2013-11-04T22:55:05.337 回答