这里付款与收款人有关联或付款与用户有关联我很困惑?

时间:2021-04-08 02:25:45

标签: ruby-on-rails

class Payment < ApplicationRecord
归属地:收款人,类名:“用户”
结束
类用户 has_many :received_pa​​yments, foreign_key: 'payee_id', class_name: 'Payment'
结束

2 个答案:

答案 0 :(得分:1)

这里,payments 表有一个列 payee_id,它只是表 users 的外键

所以你的关联是以这样的方式设置的

  1. 每笔付款都属于一个用户,并且
  2. 每个用户可以有多个付款

答案 1 :(得分:0)

通过名为 Payment 的便捷方法,User 属于 payee

标准的 Rails ORM 关联看起来像这样

class Payment < ApplicationRecord
  belongs_to :user
end 

在这种情况下,关联将假定 user 指的是 User 模型和 users 表,并且 payments 表有一个名为 {{1} } 促进这种关系。

您的模型设置为使用 user_id 可能是因为 payee 不像 payment.user } 也一样)。

要建立这种关系,它看起来像这样:

payment.payee

现在关联将假定 payer 指的是 class Payment < ApplicationRecord belongs_to :payee end 模型和 payee 表,并且 Payee 表有一个名为 payees 的列促进这种关系。

但是,在您的情况下,“收款人”是 payments(而不是 payee_id),因此我们需要将这种常规偏差告知关联,从而导致:

User

现在关联已被告知 Payee 指的是 class Payment < ApplicationRecord belongs_to :payee, class_name: 'User' end 模型和 payee 以及名为 User 的表(基于 User)但是它将使用基于关联名称 (users) 的列名加入到此表中,因此它仍将使用名为 User.table_name 的列来促进这种关系。