我正在尝试在两个模型之间创建一对一关联,称为A
和B
。模型B
可以存在于表Foo
中,如果Foo
存在,或者表Bar
,所有其他情况。
我尝试使用one_to_one关联方法的:dataset
标志来使其工作,但似乎无法弄清楚如何在不引入循环依赖的情况下使其工作。
有没有办法通过续集协会实现这一目标?或者是手写SQL的最佳方法吗?
答案 0 :(得分:1)
我不确定我是否完全明白你要做的是什么,但是根据你的描述,你应该只需要根据表Foo是否存在来制作B表:
class B < Sequel::Model(DB.table_exists?(:Foo) ? :Foo : :Bar); end
如果您真的只想为关联而不是为所有模型B执行此操作,则可以修改关联块中的FROM表:
A.many_to_one(:b){|ds| ds.from(ds.db.table_exists?(:Foo) ? :Foo : :Bar)}
我没有测试过这些,但它们应该可以工作。如果这不是您想要的,您可能希望在描述中添加更多细节。