特定のコンテキストでモデルの必要なフィールドのみを取得する方法が見つかりません。約 30 のフィールド (プロパティ) を持つ巨大なモデルがあるとします。しかし、検索目的のために、私はそれらのうちのいくつかだけが必要です.
例:
class Foo
include DataMapper::Resource
property :id, Serial
property :title, String, :length => 256
property :description, Text
property :url, String, :length => 4096
property :city, String, :length => 64
property :country, String, :length => 64
property :state, String, :length => 64
property :created_at, Time
property :updated_at, Time
property :expires_at, Time
... etc fields ...
end
したがって、フロントエンド (Web アプリケーション) では、そのフィールドのほとんどが使用されます。しかし、検索の場合は、:title、:city、:state だけを言う必要があります。そのようなデータのクエリは簡単です
items = Foo.all(:title.like => 'Some stuff')
そして、取得したデータを JSON にパックする必要があります。私の知る限り、すべての操作を処理する dm-serialize と呼ばれる DataMapper のモジュールがあります。
最後に、出力用のパッケージを作成します。
response = {:error => 0, :count => items.length, :data => items}
response.to_json
しかし、出力項目にはすべてのフィールドがありますが、それらの一部のみを取得する必要があります。何らかの理由で遅延読み込みが機能しません。
問題は、選択するモデル フィールドをどのように指定するかということです。