gpt4 book ai didi

ruby-on-rails - 我可以用更惯用的 Active Record 方式写这个吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:17 24 4
gpt4 key购买 nike

如何重写这段代码以使用最大的 Active Record 查询接口(interface)和最少的 SQL?有没有更地道的写法?

ticket_gifts = Gift
.joins("LEFT JOIN giftable_items ON gifts.giftable_item_id = giftable_items.id")
.select("gifts.total_value, gifts.created_at, gifts.user_id")
.where("giftable_items.gift_type = 'ticket'")
.to_sql

它正在做它的工作,但我对它的外观不满意。

最佳答案

我认为应该这样做:

Gift.joins(:giftable_item).where(giftable_items: { gift_type: 'ticket' })

根据 Gift 和 GiftableItem 之间的关系,如果是 has_many,则在连接中使用复数形式:

Gift.joins(:giftable_items).where(giftable_items: { gift_type: 'ticket' })
^

更新:选择:

Gift.joins(:giftable_items)
.where(giftable_items: { gift_type: 'ticket' })
.select(['total_value', 'gifts.created_at', 'user_id'])

关于ruby-on-rails - 我可以用更惯用的 Active Record 方式写这个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322400/

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