【发布时间】:2016-07-29 20:17:43
【问题描述】:
在电子商务商店应用程序中,我想检索与通过搜索表单输入的 first_name 匹配且已付款 == true 的所有订单。搜索表单通过参数Parameters: {"utf8"=>"✓", "search"=>"john", "commit"=>"Search"} 提交搜索词。在控制器中
@users = User.search(params[:search]) #returns all users with the matching first_name, e.g. 'john'
@order = Order.where('user_id = ? AND paid = ?', @users.ids, true )
@order 中的查询工作正常,如果只返回一个 user,例如只有一位用户名为 john。但如果多个用户名为 John,则返回多个用户 ID,并返回错误消息 ActiveRecord::StatementInvalid。我的理解是,一旦`@users.ids 是一个具有多个值的数组,查询就会停止工作。
我如何构建以下查询:对于每个 user_id,返回所有已付款等于 true 的订单 (user.orders)。
Models
user.rb
has_many :orders
order.rb
belongs_to :users
【问题讨论】:
标签: sql ruby-on-rails postgresql ruby-on-rails-4 rails-activerecord