如何在使用多个连接找到的结果查询中找到带有params []的特定记录

时间:2016-05-19 05:48:00

标签: ruby-on-rails activerecord

我目前有一个复杂的查询,可以成功返回完整列表的多个记录。此查询包含LEFTJOINS,其中包含LEFTJOIN。我现在正在创建一个报告,该报告需要允许选择组中的特定记录。当有多个连接(包括左连接)时,我很难发现如何形成此请求。返回的参数在params [:search]中。我试图使用的查询是:

@horses = Horse.find_by_sql["SELECT horses.id, horses.horse_name, horses.registration_number, horses.registration_number_2, horses.sire_name, horses.dam_name, horses_1.horse_name AS sire_name, horses_2.horse_name AS dam_name, horses.foaling_date, breeds.breed_name, colours.colour_name, genders.gender_name, owners.last_name, horses.arrival_date, horses.date_left, horses.notes FROM (((((horses LEFT JOIN horses AS horses_1 ON horses.sire_id = horses_1.id) LEFT JOIN horses AS horses_2 ON horses.dam_id = horses_2.id) LEFT JOIN breeds ON horses.breed_id = breeds.ID) LEFT JOIN colours ON horses.colour_id = colours.ID) LEFT JOIN genders ON horses.gender_id = genders.ID) LEFT JOIN Owners ON horses.owner_id = Owners.ID WHERE horses.id = ? ORDER BY horses.horse_name", params["search"]]

在以下问题后更新:

列出表没有真正的优势,因为查询在没有搜索参数的情况下工作正常,实际上它是我用来生成马列表的查询。添加参数["搜索"]导致问题,我已经确认它使用调试器返回正确的值:params [" search"] = 5,即预期的id。

我得到的错误给了我一个与我已经做过的相同的建议。我必须做一些非常愚蠢的事情,我无法看到。

错误讯息: 错误的参数数量(0表示1..2)建议:#Post.find_by_sql [" SELECT title FROM posts WHERE author =?",start_date]

提前感谢你

1 个答案:

答案 0 :(得分:0)

答案是:" find_by_sql"之间应该有一个空格。和" ["。当我放入这个空间时,它工作正常。