2

providersデータベースに、というタイプ列で呼び出されるテーブルがありますprovider_typeprovider_type次のいずれかになります。

  • 中心
  • スポンサー

呼び出されたクラスとSequel::Model呼び出されたクラスを継承するクラスを作成したいのですが、結果として得られるメソッドは、またはによってそれぞれのクラスのすべてのクエリをスコープします。CenterSponsorprovider_type = 'center'provider_type = 'sponsor'

私がこれを行うことができることは100%必須ではありませんが、可能であれば理想的です。

4

1 に答える 1

3

single_table_inheritanceプラグインが必要です。

class Provider < Sequel::Model
  plugin :single_table_inheritance, :provider_type
end
class Center < Provider
end
class Sponsor < Provider
end

これは機能しますが、provider_type列が「Center」または「Sponsor」と完全に一致する場合に限ります。そうでない場合は、プラグイン呼び出しに:model_mapオプションを追加する必要があります。このプラグインのドキュメントは、http://sequel.jeremyevans.net/rdoc-plugins/classes/Sequel/Plugins/SingleTableInheritance.htmlにあります。

于 2012-05-25T00:02:50.797 に答える