gpt4 book ai didi

ruby-on-rails-3 - ActiveRecord .select():是否可以清除旧选择?

转载 作者:行者123 更新时间:2023-12-03 10:50:37 25 4
gpt4 key购买 nike

有没有办法清除.select(“table.col1,...”)语句中的旧选择?

背景:

我有一个范围,它要求给定用户ID的可访问项(简化)

    scope :accessible, lambda { |user_id|
joins(:users).select("items.*")
.where("items_users.user_id = ?) OR items.created_by = ?", user_id, user_id)
}

然后,例如在索引操作中,我只需要项目ID和标题,因此我可以这样做:
@items = Item.accessible(@auth.id).select("polls.id, polls.title")

但是,这将选择列“items。,items.id,items.title”。我想避免从范围中删除选择,因为那样的话,我就不得不在其他地方添加一个select(“items。”)。我是否正确地假设没有办法做到这一点,或者要么我要获取太多字段要么必须使用多个作用域?

最佳答案

幸运的是,您错了:D,可以使用#except方法删除该关系所进行的查询的某些部分,因此,如果要删除SELECT部分​​,请执行以下操作:

@items = Item.accessible(@auth.id).except(:select).select("polls.id, polls.title")

关于ruby-on-rails-3 - ActiveRecord .select():是否可以清除旧选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4966683/

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