0

現在、問題を解決するために 2 つのクエリを使用していますが、それらを 1 つにマージできると確信しています。私は現在持っています:

guest = Guest.find_by(email: params[:email].downcase)
booking = Booking.find_by(guest_id: guest.id)

Guest モデルと Booking モデルは関連しており、1 人の Guest に多くの Booking があります。

Railsガイドのどこかで、1つのクエリでこれを行う方法を見たと思いますが、ページが見つかりません。

4

3 に答える 3

1

いくつかの方法があります。主な目的は、書く行数を減らすことではなく、読みやすいコードにすることです。

私はこのようにします。

# For style and readability, put this in a separate line:
email = params[:email].downcase
# then:
bookings = Guest.find_by( email: email ).bookings

Guestclassを宣言したことを確認してくださいhas_many :bookings

于 2013-09-14T12:14:14.617 に答える
1

モデルの関連付けが整っているので、答えは思ったよりもはるかに簡単です。

bookings = Guest.find_by_email(params[:email].downcase).bookings

この場合、結合は必要ありません。

于 2013-09-14T12:22:16.753 に答える
0

私が間違っていなければ、あなたは試すことができます

Booking.joins(:guest).where(guests: {email: params[:email].downcase}).all

詳細については、http: //guides.rubyonrails.org/active_record_querying.htmlも確認してください。

于 2013-09-14T12:06:16.927 に答える