首页 > 解决方案 > 没有任何关联的活动记录连接表出现问题

问题描述

我正在尝试过滤掉不在预定帖子表中的所有对象(照片)。我有 sql 语句工作:

Select * from photos p left join scheduled_posts sp on sp.photo_url = p.url where p.trashed = false and sp.photo_url is null

我正在尝试使用活动记录让它在 Rails 中工作,但是这两个表没有相互关联,因此我在使用 .join 时遇到了问题,并且收到了未定义的方法“join”错误。这是我当前的代码:

@objects = "#{@objects.table_name}".joins("left join scheduled_posts sp on sp.photo_url = p.url ").where("photo_url @> ?", nil)

标签: ruby-on-railsactiverecord

解决方案


"#{@objects.table_name}"是一个字符串,而#joins不是String. 不是在表名上调用,而是需要将表名转换为模型类的名称,然后#constantize在上面调用得到类常量,就可以调用#joins了。

classify(@objects.table_name).constantize.joins # ...

推荐阅读