早安溢出。
我在尝试选择存储在名为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
有一个跟进帖子,我的问题已解决here
答案 0 :(得分:0)
使用ids数组选择记录是通过查询完成的:
Record.where(id: ids)
其中ids
是ids数组。它可以替换为另一个查询。
对于您的情况,按匹配名称选择补救方法如下:
ids = Remedy.where("LOWER(remedyName) LIKE ?", name.downcase).pluck(:id)