0

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

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

有没有办法通过 Sequel 关联来实现这一点?还是手写 SQL 的最佳做法?

4

1 回答 1

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

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

于 2012-01-04T16:32:11.170 回答