1
假設我有這樣的事情:如何使用Sequel保存新創建的關聯模型?
# Schema:
DB.create_table :transactions do
primary_key :id
foreign_key :card_id, :cards
Integer :amount
end
DB.create_table :cards do
primary_key :id
foreign_key :transaction_id, :transactions
Intger :number
end
# Models:
class Transaction < Sequel::Model
one_to_one :card
end
class Card < Sequel::Model
one_to_one :transaction
end
如何使這項工作,使得其既節省了trans
,card
,及其各自的關聯?
trans = Transaction.new(:amount => 100)
card = Card.new(:number => 4000500060007000)
trans.card = card
trans.save
因爲它的立場,這不起作用,因爲card
沒有首先保存,和Sequel拋出一個「無主鍵」的錯誤。如果我先保存card
,它將不會得到transaction
的ID。
基本上,我試圖避免這種情況:
# Save without associations first, but this will assign primary keys
trans.save
card.save
# Now, manually create associations
trans.card = card
card.trans = trans
# Re-save again, this time with associations
trans.save
card.save
謝謝,但我找不從'1改變對象關聯的解決方案:1''1:many'。 – 2013-07-05 18:48:17
爲什麼不把表結合起來?如果關係是1:1和1:1,那麼沒有理由不創建具有兩組列的表 - 它將表示完全相同的數據。 – 2013-07-06 19:25:24
這個例子很簡單,我用它來說明問題。實際的模型要複雜得多。 – 2013-07-06 23:31:47