Select 记录是否与数组中的任何 ID 具有相同的 ID
Select record if the records has same id as any of the ID's in the Array
我无法找到正确的语法和运算符来检查记录的 ID 是否与存储在数组中的任何 ID 相同。是否有 has any?
函数或类似函数?
@problem = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
@pretreatments = Treatment.joins(:remedies_treatment).where(:remedies_treatment_remedy_id == @problem)
我已将代码更新为:
ids = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
@pretreatments = Treatment.joins(:remedies_treatments).where(remedies_treatments: { remedy_id: @problem })
但是我现在得到的错误是:
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'
使用 ActiveRecord,您可以从数据库中搜索匹配的记录:
@problem = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
@pretreatments = Treatment.joins(:remedies_treatment).where(:remedies_treatment_remedy_id: @problem)
这对 where
子句使用 Hash
语法,指定您要检索 remedies_treatment_remedy_id
包含 @problem
中任何值的任何记录。
既然你想匹配id,那么获取列表,并在下一个查询中使用它:
ids = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
Treatment.joins(:remedies_treatments).where(remedies_treatments: { remedy_id: ids })
注意:你应该在Treatment
中有以下关系:
class Treatment
has_many :remedies_treatments
end
我无法找到正确的语法和运算符来检查记录的 ID 是否与存储在数组中的任何 ID 相同。是否有 has any?
函数或类似函数?
@problem = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
@pretreatments = Treatment.joins(:remedies_treatment).where(:remedies_treatment_remedy_id == @problem)
我已将代码更新为:
ids = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
@pretreatments = Treatment.joins(:remedies_treatments).where(remedies_treatments: { remedy_id: @problem })
但是我现在得到的错误是:
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'
使用 ActiveRecord,您可以从数据库中搜索匹配的记录:
@problem = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
@pretreatments = Treatment.joins(:remedies_treatment).where(:remedies_treatment_remedy_id: @problem)
这对 where
子句使用 Hash
语法,指定您要检索 remedies_treatment_remedy_id
包含 @problem
中任何值的任何记录。
既然你想匹配id,那么获取列表,并在下一个查询中使用它:
ids = Remedy.where(["LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase]).pluck(:id)
Treatment.joins(:remedies_treatments).where(remedies_treatments: { remedy_id: ids })
注意:你应该在Treatment
中有以下关系:
class Treatment
has_many :remedies_treatments
end