Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在'find_by_sql'中传递字符串值`_Ruby On Rails_Ruby On Rails 4_Find By Sql - Fatal编程技术网

Ruby on rails 如何在'find_by_sql'中传递字符串值`

Ruby on rails 如何在'find_by_sql'中传递字符串值`,ruby-on-rails,ruby-on-rails-4,find-by-sql,Ruby On Rails,Ruby On Rails 4,Find By Sql,使用类似查询的方式: Campaign.find_by_sqlselect c.*,sc.*,org.name as org_name from Campaign as c left join super_Campaign as sc.id=c.super_Campaign_id left join organization as org ON org.id=c.organization_id其中c.status=0和sc.status='active' 使用sc.status='active'

使用类似查询的方式:

Campaign.find_by_sqlselect c.*,sc.*,org.name as org_name from Campaign as c left join super_Campaign as sc.id=c.super_Campaign_id left join organization as org ON org.id=c.organization_id其中c.status=0和sc.status='active'


使用sc.status='active'后出现错误。谢谢。

您可以通过使用插值来实现这一点,下面是我制作的一个类似项目的示例

self.find_by_sql("SELECT s.subject_title  AS subject_name,s.subject_code AS subject_code,
COUNT(*) AS total_complaints,
COUNT(CASE p.priority_name WHEN '#{Ticket::HIGH}'        THEN 1 END) AS high_complaints,
COUNT(CASE p.priority_name WHEN '#{Ticket::NORMAL}' THEN 1 END) AS normal_complaints,
COUNT(CASE p.priority_name WHEN '#{Ticket::LOW}'     THEN 1 END) AS low_complaints
FROM
tickets AS t
JOIN
subjects AS s
ON  t.subject_id = s.id
JOIN
priorities AS p
ON t.priority_id = p.id
WHERE
p.priority_name IN ('#{Ticket::HIGH}', '#{Ticket::NORMAL}', '#{Ticket::LOW}')
GROUP BY s.subject_title, s.subject_code
ORDER BY total_complaints ASC")
正如您所看到的,{Ticket::HIGH}来自PRIORITY=[HIGH='HIGH',NORMAL='NORMAL',LOW='LOW'],其他的也一样

注意:这是原始代码的一部分