1

私は Rails3.rc と Active Record 3 (meta_where を使用) を使用していますが、Sequel に切り替え始めたばかりです。

私はすでに active_model プラグイン (およびその他のプラグイン) を使用しています。

  1. 私の知る限り、User[params[:id]]の代わりに使用する必要がありUser.find(params[:id])ます。ただし、レコードが存在しない場合は発生せず、値を整数 (PK の型) に変換しないため、where句内の文字列として使用されます。これがパフォーマンスの問題を引き起こしているかどうかはわかりません。これは害がありidentity_mapますか?これらの両方の問題を解決する最善の方法は何ですか?

  2. User.messages_datasetおよびのような関連付けの使用法を反転して、Active Record のように動作させる簡単な方法はありますか ( User.messages) 。私はたくさん使うと思いますが、単に追加できるので、配列メソッドは必要ありません。User.messagesUser.messages_data_set#..._dataset.all

  3. 同じ (複雑な) クエリが 1 つのアクション内で複数回実行される場合があることに気付きました。Active Record クエリ キャッシュのようなものはありますか? (identity_mapこれらのケースではうまくいかないようです)。

  4. to_sqlデータセットが生成する生の SQL を取得するために呼び出すことができるものはありますか?

4

1 に答える 1

3
  1. 次のいずれかを使用できます。

    User[params[:id].to_i] || raise Sequel::Error
    

    または、そのようなことを行う独自のメソッドを作成します。Sequel は非整数の主キーをサポートしているため、自動的に変換されません。アイデンティティ マップに影響を与えるべきではありません。identity_map プラグインを使用していない限り、Sequel は ID マップを使用しないことに注意してください。最善の方法は、独自のヘルパー メソッドを作成することだと思います。

  2. あまり。プラグインを使用してassociation_proxies、オブジェクトの配列ではなく非配列メソッドをデータセットに送信できます。一般に、関連付けデータセット メソッドはあまり使用しないでください。頻繁に使用している場合は、その特定の使用法に関連付ける必要があることを示しています。

  3. クエリキャッシュはありますし、今後もありません。最初のクエリの結果がキャッシュされて再利用されるように、アクションを記述する必要があります。

  4. Dataset#sqlデータセットの を提供しますSELECT SQL

于 2010-07-31T00:49:27.617 に答える