0

たとえば、教授には多くの予定があります。したがって、Professor テーブルと Appointment テーブルがあります。後者の場合、各エントリには、Professor テーブルのエントリを指す外部キーがあります。これは、Rails の典型的な has_many 関係です。

私の質問は、特定の教授が持っているすべての予定を照会したい場合はどうすればよいですか? 教授から予約へのバック ポインターがないため、Appointment テーブル全体を調べて、この 1 人の教授だけをチェックする必要があります。私はこの方法が機能することを知っていますが、効率は悪いようです。では、has_many 関係での後方検索 (あなたがそれを何と呼んでいるのかわからないので、ここで用語を作っています) のより良い解決策を教えてください。

4

1 に答える 1

2

このコードを考えると:

class Professor < ActiveRecord::Base
  has_many :appointments
end

class Appointment < ActiveRecord::Base
  belongs_to :professor
end

次のように、関連付けを使用してデータベースにクエリを実行できます。

professor = Professor.find(1)
appointments = professor.appointments

これにより、特定の教授に属する予定のみが取得されます。このコードは、アポイント テーブル全体をメモリにロードしません。必要なデータのサブセットのみを選択するクエリを作成しています。

于 2013-03-28T07:11:48.013 に答える