Rails使用join+pluck获取Buyer ID出错,返回BananaSaleTicket ID求助
解决方法
当通过joins关联多个表且字段名重复时,ActiveRecord会默认选取**主表(这里是banana_sale_tickets)**的同名字段,所以你需要明确指定要获取buyers表的id:
方法一:直接指定表名字段
previous_banana_buyers_ids = @banana_stand.banana_sale_tickets.joins(:buyer).pluck('buyers.id')
方法二:用Arel避免硬编码(更健壮)
利用Rails的Arel查询构造器,通过模型的表对象指定字段,减少拼写错误风险:
previous_banana_buyers_ids = @banana_stand.banana_sale_tickets.joins(:buyer).pluck(Buyer.arel_table[:id])
额外优化:去重唯一买家ID
如果同一个买家可能多次购买,想要获取不重复的买家ID,加上distinct:
previous_banana_buyers_ids = @banana_stand.banana_sale_tickets.joins(:buyer).distinct.pluck('buyers.id')
内容的提问来源于stack exchange,提问作者daveasdf_2
相关产品推荐
相关产品推荐

