gpt4 book ai didi

ruby-on-rails - activerecord 不像查询

转载 作者:行者123 更新时间:2023-12-04 02:43:25 24 4
gpt4 key购买 nike

我找不到相当于“不喜欢”的事件记录。我找到了一个 where.not ,但这将检查字符串是否与值不匹配,如下所示:

User.where.not(name: 'Gabe')

is the same as:

User.where('name != ?', 'Gabe')

我正在寻找一个 NOT LIKE,其中该值不包含在字符串中。等效的 sql 查询如下所示:
SELECT * FROM users WHERE name NOT LIKE '%Gabe%'

在 ActiveRecord 中,我目前可以摆脱以下情况:
User.where("name NOT LIKE ?", "%Gabe%")

但这还有很多不足之处。 Rails 4 是否有任何新增功能可以促进这一点?

最佳答案

正如其他人指出的,ActiveRecord 没有很好的语法来构建 like声明。我建议使用 Arel,因为它使查询不那么特定于数据库平台(将 ilike 用于 sqlite 和 like 用于其他平台)。

User.where(User.arel_table[:name].does_not_match('%Gabe%'))

您还可以将其实现为包含模型实现的范围:
class User < ActiveRecord::Base
scope :not_matching,
-> (str) { where(arel_table[:name].does_not_match("%#{str}%")) }
end

关于ruby-on-rails - activerecord 不像查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30719049/

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