Дело в том, что синтаксис:
sql = "select * from model where column = ?"
data = Model.find_by_sql [sql, 'some value']
был разработан для предотвращения SQL инъекции. То, что вы пытаетесь сделать здесь, это именно то, что этот синтаксис пытается предотвратить. Вот почему он не работает.
Вам необходимо заменить вопросительный знак вручную в вашем SQL, прежде чем отправлять его методу find_by_sql
.
, например, во время создания SQL строка:
sql = <<~SQL
SELECT
column_1,
column_2
FROM (
#{someotherquery.to_sql}
) AS sample_table
GROUP BY
column_1,
column_2
SQL
или путем замены:
sql.sub!('?', someotherquery.to_sql)
Наконец, теперь вы можете отправить ее на find_by_sql
для выполнения запроса
somemodel = SomeModel.find_by_sql(sql)