如果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)