2

私はルビーとレールを初めて使用し、データベース ビューと組み合わせて MVC 手法を概念化するのに苦労しています。レポートの生成に使用されるいくつかのビューを持つレガシー データベースを扱っています。

私が迷っているのは、データベース ビューを実際にどのように使用するかということです。モデルに入れるべきですか?もしそうなら、それは正確にどのように見えるでしょうか?

例として、従来のデータベースには qryTranscriptByGroup というビューがあります。従来のアプリケーションでは、「SELECT * FROM qryTranscriptByGroup WHERE group='test_group'」などの SQL ステートメントで使用されます。これにより、通常は 100 未満の少数のレコードが返されます。

モデル Transcript を作成する場合、Transcript.find_by_group(group) のようなメソッドをどのように定義しますか? 同様に、このコンテキストでは無効になるため、他の「検索」メソッドを防ぐ必要があるように思われます。

ビューが読み取り専用であり、作成、更新、または破棄の試みを防ぐ必要があるという事実もあります。

おそらく、私はこれについて完全に間違った方法で進んでいます。肝心なのは、ユーザーに関する情報 (トランスクリプト) を表すいくつかのテーブル (モデル?) から情報を取得する必要があるということです。実際には 1 人以上のユーザー (トランスクリプトは複数形)。

-ありがとう!

4

1 に答える 1

6

通常のモデルと同じようにデータベースビューを使用できます。

あなたの場合:

class Transcript < ActiveRecord::Base
  set_table_name "qryTranscriptByGroup"
  set_primary_key "if_not_id"
end

クエリは次のようになります。

Trascript.find_by_group('test_group')

何も宣言する必要はありません。

Railsはmethod_missingメソッドを使用して、find_by_column_nameメソッドを魔法のように生成します。

作成/更新/削除アクションの場合は、単にそれらを削除することも、コントローラーで作成しないこともできます。

于 2011-03-02T11:43:43.860 に答える