如果Record具有Array中的任何ID,则选择所有记录
早安溢出。
我在尝试选择所有具有存储在名为@problem
的数组中的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)