如果记录具有数组中的任何 ID,则选择所有记录
Selecting all Records if Record has any of the ID's from Array
早安溢出。
我在尝试 select 所有 Treatments
时遇到问题,这些 ID 都存储在名为 @problem
.
的数组中
这是我的治疗控制器。
@problem = Remedy.find_by_sql(["SELECT id FROM remedies WHERE LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase])
query = "SELECT * FROM treatments INNER JOIN remedies_treatments on treatments.id = remedies_treatments.treatment_id WHERE remedies_treatments.treatment_id LIKE ?"
@pretreatments = Treatment.find_by_sql([query, @problem])
这是来自控制台的错误
ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: syntax error at or near ","
LINE 1: ...d WHERE remedies_treatments.treatment_id LIKE 233,234,224
'LIKE' 运算符可能不是我想要做的事情所需要的 - 我尝试使用 ANY 运算符但也无济于事。问题是否源于它是一个整数数组?
治疗模型。
class Treatment < ActiveRecord::Base
has_and_belongs_to_many :remedy
end
补救模型。
class Remedy < ActiveRecord::Base
has_and_belongs_to_many :treatments, dependent: :destroy
end
有跟进 post 解决了我的问题
通过 ids 数组选择记录是通过查询完成的:
Record.where(id: ids)
其中 ids
是 ids 数组。可以换成其他查询。
对于您的情况,按匹配名称选择补救措施如下:
ids = Remedy.where("LOWER(remedyName) LIKE ?", name.downcase).pluck(:id)
早安溢出。
我在尝试 select 所有 Treatments
时遇到问题,这些 ID 都存储在名为 @problem
.
这是我的治疗控制器。
@problem = Remedy.find_by_sql(["SELECT id FROM remedies WHERE LOWER(\"remedyName\") LIKE?", "%#{params[:searchremedy]}%".downcase])
query = "SELECT * FROM treatments INNER JOIN remedies_treatments on treatments.id = remedies_treatments.treatment_id WHERE remedies_treatments.treatment_id LIKE ?"
@pretreatments = Treatment.find_by_sql([query, @problem])
这是来自控制台的错误
ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: syntax error at or near ","
LINE 1: ...d WHERE remedies_treatments.treatment_id LIKE 233,234,224
'LIKE' 运算符可能不是我想要做的事情所需要的 - 我尝试使用 ANY 运算符但也无济于事。问题是否源于它是一个整数数组?
治疗模型。
class Treatment < ActiveRecord::Base
has_and_belongs_to_many :remedy
end
补救模型。
class Remedy < ActiveRecord::Base
has_and_belongs_to_many :treatments, dependent: :destroy
end
有跟进 post 解决了我的问题
通过 ids 数组选择记录是通过查询完成的:
Record.where(id: ids)
其中 ids
是 ids 数组。可以换成其他查询。
对于您的情况,按匹配名称选择补救措施如下:
ids = Remedy.where("LOWER(remedyName) LIKE ?", name.downcase).pluck(:id)