假設我有以下的模型關係:的Rails:請給一個DB行不同的引用指向同一個Ruby對象
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
...,因此,如果玩家模型修改self
,和卡模式在同一個請求修改self.player
,那麼modifi陽離子不會相互通知,最後保存的將覆蓋其他。
我想解決這個問題(大概是採用某種形式的緩存),以便具有給定id的Player的所有請求都會返回相同的對象(相同的object_ids),從而允許兩個模型編輯相同的對象對象,而無需執行數據庫保存並重新加載。我有三個問題:
- 是否已有插件或寶石來做到這一點?
- 有沒有很好的理由爲什麼我不應該做到這一點?
- 任何人都可以給我一些關於如何去做這件事的指針嗎?
您能否更好地解釋從播放器對象和卡對象編輯播放器的用例? – rwilliams 2010-11-06 09:56:52
查看鏈接的問題。假設它需要玩家1的行動來玩一張卡片,並且有一種特殊類型的卡片在你玩遊戲時授予2個動作。然後我想在Player中執行'self.actions - = 1',在Card子類中執行'player.actions + = 1'。 – Chowlett 2010-11-09 09:27:35