gpt4 book ai didi

mysql - 在 ActiveRecord 关联中使用 FIELD

转载 作者:行者123 更新时间:2023-11-29 06:19:10 25 4
gpt4 key购买 nike

我想首先显示标记有当前语言环境的帖子。我认为 MySQL FIELD 函数是解决这个问题的好方法。

但是,

Post.includes(:tags).order("FIELD(tags.name, '#{I18n.locale}') DESC").first

结果

Mysql2::Error: Unknown column 'tags.name' in 'order clause': SELECT  spree_posts`.* FROM 'spree_posts' ORDER BY FIELD(tags.name, 'en') DESC LIMIT 1

如果我尝试

Post.includes(:tags).order("FIELD(tags.name, '#{I18n.locale}') DESC").where.not(tags: { name: 'WTF?' } )

它根据 FIELD 方法正确返回帖子,但是使用标签进行连接,因此不会返回所有没有标签的帖子:(

我认为这可能是 ActiveRecord 中的错误?这绝对不是我期望的行为。

最佳答案

如果你想使用 includes 并确保 Rails 在主查询中加载表,你应该使用 references:

Post.includes(:tags).references(:tags).
order("FIELD(tags.name, '#{I18n.locale}') DESC").first

关于mysql - 在 ActiveRecord 关联中使用 FIELD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34269046/

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