如何动态选择续集关联中的表格?

时间:2012-01-04 01:28:23

标签: sequel

我正在尝试在两个模型之间创建一对一关联,称为AB。模型B可以存在于表Foo中,如果Foo存在,或者表Bar,所有其他情况。

我尝试使用one_to_one关联方法的:dataset标志来使其工作,但似乎无法弄清楚如何在不引入循环依赖的情况下使其工作。

有没有办法通过续集协会实现这一目标?或者是手写SQL的最佳方法吗?

1 个答案:

答案 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)}

我没有测试过这些,但它们应该可以工作。如果这不是您想要的,您可能希望在描述中添加更多细节。