如果记录具有与数组中任何ID相同的ID,则选择记录 [英] Select record if the records has same id as any of the ID's in the Array

查看:115
本文介绍了如果记录具有与数组中任何ID相同的ID,则选择记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难找到正确的语法和运算符来检查记录是否具有与数组中存储的任何ID相同的ID。是否有有功能?函数或类似功能?

I am having trouble finding the right syntax and operator to check if a record has the same ID of any of the ID's stored in an Array. Is there a has any? function or similar?

@problem = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)

@pretreatments =  Treatment.joins(:remedies_treatment).where(:remedies_treatment_remedy_id == @problem)

I已将代码更新为:

 ids = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)

 @pretreatments = Treatment.joins(:remedies_treatments).where(remedies_treatments: { remedy_id: @problem })

但是我现在遇到的错误是:

However the error I am getting now is:

     SELECT "treatments".* FROM "treatments" INNER JOIN "remedies_treatments" ON "remedies_treatments"."treatment_id" = "treatments"."id" WHERE "remedies_treatment"."remedy_id" IS NULL
Completed 500 Internal Server Error in 157ms (ActiveRecord: 17.0ms)

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "remedies_treatment"
LINE 1: ...atments"."treatment_id" = "treatments"."id" WHERE "remedies_...
                                                             ^
: SELECT "treatments".* FROM "treatments" INNER JOIN "remedies_treatments" ON "remedies_treatments"."treatment_id" = "treatments"."id" WHERE "remedies_treatment"."remedy_id" IS NULL):
  app/controllers/treatments_controller.rb:116:in `index'



ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "remedies_treatment"
LINE 1: ...atments"."treatment_id" = "treatments"."id" WHERE "remedies_...
                                                             ^
: SELECT "treatments".* FROM "treatments" INNER JOIN "remedies_treatments" ON "remedies_treatments"."treatment_id" = "treatments"."id" WHERE "remedies_treatment"."remedy_id" IS NULL
        from C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/activerecord-4.2.5/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `async_exec'


推荐答案

由于您希望匹配ID,因此请获取列表,并在下一个查询中使用它:

Since you wish to match ids, so get the list, and use it in next query:

ids = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)

Treatment.joins(:remedies_treatments).where(remedies_treatments: { remedy_id: ids })

注意:在治疗:

class Treatment
   has_many :remedies_treatments
end

这篇关于如果记录具有与数组中任何ID相同的ID,则选择记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆