gpt4 book ai didi

ruby-on-rails - 如何正确读取,更重要的是,如何写入 ruby​​ on rails 中的 3 表连接

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:07 24 4
gpt4 key购买 nike

我有 4 个模型(付款、供应商、客户和生产者)。一笔付款属于一个供应商,可以用于多个客户。每个客户(每次付款)都有一个或多个生产者。每个付款-客户-生产者组合都有生产者收到的佣金百分比。支付协会的供应商是直截了当的,但是支付-客户-生产者协会却让我失望。

我创建了一个富连接:

class CreateProducerPercentages < ActiveRecord::Migration
def change
create_table :producer_percentages do |t|
t.references :payment
t.references :client
t.references :producer
t.decimal :comp, :precision => 5, :scale => 4, :null => false, :default => 0.2
t.timestamps
end
add_index :producer_percentages, [:payment_id, :client_id, :producer_id], :unique => true
end
end

创建我的模型:

class Payment < ActiveRecord::Base
belongs_to :vendor
has_many :producer_percentages
has_many :clients, :through => :producer_percentages
end

class Client < ActiveRecord::Base
has_many :producer_percentages
has_many :payments, :through => :producer_percentages
has_many :producers, :through => :producer_percentages
end

class Producer < ActiveRecord::Base
has_many :producer_percentages
end

class ProducerPercentage < ActiveRecord::Base
belongs_to :payment
belongs_to :client
belongs_to :producer
end

查看付款是通过数据网格 (jqGrid) 完成的,其中客户是付款的子网格,生产者是客户子网格的子网格。

换句话说

Payment.first.clients.first.producers

应该只返回与该支付-客户组合关联的生产者。我能够通过向客户端添加一个方法来实现这一点,该方法将付款作为参数并返回生产者。

def producers(payment)
Producer.joins(:producer_percentages).where("payment_id = ? AND client_id = ?", payment.id, self.id)
end

然而,这对储蓄没有帮助。对于那部分我迷路了。我在想它可能必须是一个 after_save 但无法弄清楚如何/在哪里实现它。是否有处理此类情况的首选/常规方式?

最佳答案

我会遵循两个阶段的过程:

第 1 阶段:

-确保首先将所有相关的付款、客户和生产者保存到数据库中。

第 2 阶段:

-因为您现在拥有所有必需的 ID,所以更新 ProducerPercentage 以包含关系。

关于ruby-on-rails - 如何正确读取,更重要的是,如何写入 ruby​​ on rails 中的 3 表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21494675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com