7

私はレールに取り組んでいます。

私の必要は、

@accountUrl = Account.find_by_id(current_account_id)

@details = Detail.find_by_acc_id(@accountUrl.id)

上記の例から内部結合クエリを作成する方法

誰でもできます。

4

3 に答える 3

25

この単純なケースでは、Rails は結合を使用せず、「コード内」で結合します。

Account.includes(:details).where(:id => current_account_id).first

2 つの個別のクエリが作成されます。

選択の条件が必要な場合は、「手動で」(またはスコープを介して)参加する必要があります

Account.joins(:details).where("details.name" => selected_detail).first

これにより、INNER JOIN が作成され、条件を満たすアカウントのみが返されます。

于 2012-10-03T06:34:09.363 に答える
4
model A
  has_many :bs

model B
  has_many :cs

モデルAでは、あなたは書くことができます

has_many :cs, :through => :bs #uses inner join to fetch the records.

http://guides.rubyonrails.org/active_record_querying.htmlhttp://asciicasts.com/episodes/215-advanced-queries-in-rails-3をチェックしてください

于 2012-10-03T05:49:12.377 に答える
0

Rails docの Rails Example では INNER JOIN がデフォルトです

User.joins(:posts)
=> SELECT "users".* FROM "users" INNER JOIN "posts" ON "posts"."user_id" = "users"."id"

あなたの場合、それは次のようになります:

Account.joins(:details)
       .where(id: current_account_id)
于 2018-06-29T09:02:54.663 に答える