gpt4 book ai didi

ruby-on-rails - 在 rails 4 的 where 条件中使用字符串变量作为字段名称

转载 作者:行者123 更新时间:2023-12-05 08:57:27 25 4
gpt4 key购买 nike

我在 Controller 中有一个方法,用于检查数据库中是否已存在某个字段的值。在我的例子中,我必须通过 AJAX 检查多个字段,例如用户名、电子邮件和 URL。

所以我写了下面的函数

  def check_field_already_exist?(field, params )

merchant_url = MerchantUrl.where(field: filter_params[field.to_sym]).first

# here params[:id] is available only while editing the MerchantUrl
is_available = if (params[:id] && merchant_url)
merchant_url.id == params[:id]
else
merchant_url.blank?
end
end

并将此方法调用为

  def is_name_available
render json: check_field_already_exist?('username', params)
end

def is_url_available
render json: check_field_already_exist?('url', params)
end

def is_email_available
render json: check_field_already_exist?('email', params)
end

但是在执行时会抛出错误

Mysql2::错误:“where 子句”中的未知列“merchant_urls.field”:SELECT merchant_urls.* FROM merchant_urls WHERE merchant_urls.field = ' http://localhost:3000 '

那么,有什么方法可以使用字符串变量作为字段名吗?谢谢。

最佳答案

正确的方法是使用旧的 hashrocket 语法

merchant_url = MerchantUrl.where(field => filter_params[field])

关于ruby-on-rails - 在 rails 4 的 where 条件中使用字符串变量作为字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32369498/

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