gpt4 book ai didi

ruby-on-rails-3 - 导轨 : Make different references to a DB row refer to the same Ruby object

转载 作者:行者123 更新时间:2023-12-04 06:42:36 24 4
gpt4 key购买 nike

假设我有以下模型关系:

class Player < ActiveRecord::Base
has_many :cards
end

class Card < ActiveRecord::Base
belongs_to :player
end

我从 this question 知道Rails 将返回一个表示数据库行的对象的副本,这意味着:
p = Player.find(:first)
c = p.cards[0]
c.player.object_id == p.object_id # => false

...因此如果 Player 模型修改了 self , Card 模型修改 self.player在同一个请求中,那么修改不会互相注意,最后保存的将覆盖其他的。

我想解决这个问题(大概使用某种形式的缓存),以便对具有给定 id 的 Player 的所有请求都将返回相同的对象(相同的 object_ids),从而允许两个模型编辑相同的对象而不必执行数据库保存和重新加载。我有三个问题:
  • 是否已经有插件或 gem 可以做到这一点?
  • 有充分的理由为什么我不应该这样做吗?
  • 谁能给我一些关于如何去做这件事的指示?
  • 最佳答案

    这在 Rails 3.x 中得到支持。您可以使用 :inverse_of has_many 的选项例如协会。 Documentation here (搜索 :inverse_ofBi-directional associations )。

    关于ruby-on-rails-3 - 导轨 : Make different references to a DB row refer to the same Ruby object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4068108/

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