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