「06 データベース抽象化レイヤ」 で幾つか新しい機能の記述があります。この中で、次の機能があります。
- common fields (共通フィールド)
- common filter (共通フィルター)
括弧内は現在の日本語名です。
この内 common fields は事前に定義すると、各テーブル中に同じフィールドが追加される仕組みです。
db._common_fields.append(Field('request_tenant',
default=request.env.http_host,writable=False))
db.define_table('person',
Field('name'),
format='%(name)s')
db.define_table('dog',
Field('owner', db.person),
Field('name'))
と書くと、personにもdogにも request_tenant が追加されます。このため、「共通フィールド」という名前でも妥当だと思います。
common filter は次のように設定すると、検索実行時に検索条件として、is_public==True が自動で入るようになります。
db.define_table('blog_post',
Field('subject'),
Field('post_text', 'text'),
Field('is_public', 'boolean'),
common_filter = lambda query: db.blog_post.is_public==True
)
こう書くと「共通フィルター」という名前は、妥当でないのかなという気がします。
ただ先ほどの「共通フィールド」の request_tenant フィールドは特殊で、
db.person.requet_tenant=request.env.http_host
と記述するだけで、common filter を設定することができます。
これはマルチテナントを実現する機能で、これによって、ドメイン毎に検索条件の自動設定が可能になります。
これだけの機能を見れば、「共通フィルター」でも良いのかなという気になります。
個人的には、次のように日本語の機能名を次のようにしたら良いのかなと思っています。
「現在の日本語訳」
- common fields (共通フィールド)
- common filter (共通フィルター)
「案1」
- common fields (共通フィールド)
- common filter (コモンフィルター)
「案2」
- common fields (コモンフィールド)
- common filter (コモンフィルター)
ちょっと長くて難しくなりましたが、皆さんのご意見お願い致します。