gpt4 book ai didi

sql - 在 Rails 4 中编写 SQL

转载 作者:行者123 更新时间:2023-11-29 12:18:30 24 4
gpt4 key购买 nike

我有一个 payment_request 模型和一个 payment_detail 模型。在 payment_request 索引中,我需要能够按存储在 payment_details 表中的名字和姓氏进行搜索。我刚开始编写 SQL,需要一些帮助。我认为下面的查询是正确的,但我不确定如何在我的 Rails Controller 中编写它以便我可以按名称搜索。

SELECT first_name, last_name
FROM payment_details
LEFT OUTER JOIN payment_requests
ON payment_requests.id = payment_details.payment_request_id;

最佳答案

如果您使用的是 ActiveRecord 模型,则可以跳过所有这些并使用 ActiveRecord Querying Interface 构建该查询.

@payment_requests = PaymentRequest.joins(:payment_detail).where(payment_detail: {first_name: params[:first_name], last_name: params[:last_name]})

如果您打算在该索引页上显示 payment_details 数据,您应该考虑在该查询中包含该信息,从而避免 n+1 查询。

@payment_requests = PaymentRequest.includes(:payment_detail).where(payment_detail: { first_name: params[:first_name], last_name: params[:last_name]})

Note: You've got to have a complete match to use the above, so it may not be what you want.

我还建议您使用 Ransack gem 来构建复杂的查询。它会是这样的:

PaymentRequest.ransack(params[:q])

在您看来:

<%= f.search_field :payment_detail_first_name_or_payment_detail_last_name_cont %>

这将允许您仅使用一个字段来查询两列。

关于sql - 在 Rails 4 中编写 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39879526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com