gpt4 book ai didi

ruby - 如何使用 Active::Record 使数据库显示为按某些列分区

转载 作者:搜寻专家 更新时间:2023-10-30 20:45:44 25 4
gpt4 key购买 nike

假设列 client_id 在我们的数据库中无处不在,并且对于给定的 session 或请求,我们将始终处于客户端的“上下文中”。

有没有办法模拟将每个客户的数据存储在单独的数据库中,同时将它们保存在同一个表中以简化数据库管理?我想要的类似于默认范围,但由于它会根据每个请求而改变,因此无法在加载时修复。

  # invoices table data
# -------------------
# id client_id amount
# 1 1 100.00
# 2 2 100.00
with_client( Client.find(1) ) do
Invoices.all # finds only invoice 1
Invoices.find(2) # finds nothing or raises
end

我如何使用 ActiveRecord 做到这一点,或者我可以在什么时候通过外科手术改变 AR 来影响这种行为?

额外要点:我想阻止更新此 client_id 列 - 它应该在创建时修复

最佳答案

class Client < ActiveRecord::Base
has_one :invoice, :dependent => :destroy
end

class Invoice < ActiveRecord::Base
belongs_to :client
end

In controller

@client= Client.find(1)
@client.invoice #finds id =1 client_id =1 amount=100.0

关于ruby - 如何使用 Active::Record 使数据库显示为按某些列分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3213757/

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