web2py book の用語について - Common filter

11 views
Skip to first unread message

kato

unread,
Apr 25, 2012, 7:51:54 PM4/25/12
to web2py...@googlegroups.com
 「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 (コモンフィルター)
ちょっと長くて難しくなりましたが、皆さんのご意見お願い致します。







kato

unread,
Apr 26, 2012, 12:59:29 AM4/26/12
to web2py...@googlegroups.com
慌てて書いたので、間違っていたり分かり難い表現があるようなので、再送します。

---------------------------------------------------------------------------------------------------------------------------

 「06 データベース抽象化レイヤ」 で幾つか新しい機能の記述があります。この中で、次の機能があります。
  • common fields (共通フィールド)
  • common filter (共通フィルタ)
括弧内は現在の日本語名です。

common fields

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

common filter は次のように設定すると、検索実行時に検索条件として、db.blog_post.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 フィールドは特殊です。フィールドが存在するだけで、common filter を設定することができます。
これはマルチテナントを実現する機能で、ドメイン毎に検索条件の自動設定が可能になります。
この機能だけを見れば、「共通フィルタ」でも良いという気になります。

日本語訳案

日本語の機能名を次のようにしたらどうかと考えています。

「現在の日本語訳」
  • common fields (共通フィールド)
  • common filter (共通フィルタ)
「案1」
  • common fields (共通フィールド)
  • common filter (コモンフィルタ)
「案2」
  • common fields (コモンフィールド)
  • common filter (コモンフィルタ)
ちょっと長くて難しくなりましたが、皆さんのご意見お願い致します。


2012年4月26日8:51 kato <hi21a...@yahoo.co.jp>:

Omi Chiba

unread,
Apr 26, 2012, 9:17:56 AM4/26/12
to web2py...@googlegroups.com
案2に+1

common fieldsは複数のテーブルに共通する定義を使用するのに対して、common filterは特定のテーブルにおいて、コントローラーで同様の条件を繰り返さなくてよいように使用するので、同じcommonでも意味が違うから紛らわしいのだと思います。

片方は共通で片方はコモンというのもしっくりこないので、どちらもコモンにしておいたほうが良いですかね。

Mitsuhiro Tsuda

unread,
Apr 26, 2012, 9:42:58 AM4/26/12
to web2py...@googlegroups.com
最初のは「共通フィールド」で理解できます。
しかし、後のは悩ましいですね。実際に使うとわかるかも・・・
どれかにするなら、現状。(あまりこだわりは無し。)


2012年4月26日22:17 Omi Chiba <ochi...@gmail.com>:

kato

unread,
Apr 26, 2012, 6:05:03 PM4/26/12
to web2py...@googlegroups.com
Chibaさん
ご返答ありがとうございます。
そうなんですよ、勘違いしやすい名前なんですよね。
私も案2に少し傾いています。

Tsudaさん
ご返答ありがとうございます。
この両方のCommonですが、第四版のDALの新機能の中でも特に使いでがある機能なんです。
そんな機能の名前を勝手に変えると、問題になりそうなので相談させて頂きました。


2012年4月26日22:42 Mitsuhiro Tsuda <mi.t...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages