0

Aとという 2 つのモデル間に 1 対 1 の関連付けを作成しようとしていますB。モデルBは、存在するFoo場合は table Foo、またはBar他のすべての状況では table のいずれかに存在できます。

: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 に答える