琥珀色Crecto:与LEFT JOIN的预加载关联

时间:2018-09-24 13:51:30

标签: crystal-lang amber-framework

我有2个模型:Task和TaskLimit。 Task属于TaskLimit。但是task_limit_id可能为Nil,因此我需要使用LEFT JOIN来预加载现有的TaskLimit。 我可以加入的唯一方法是:

query = query.join(:task_limit).preload(:task_limit)

但是它不会选择没有TaskLimit的任务。 Query类的源代码中有一个方法,我可以为JOIN指定String:

def self.join(join_string : String) self.new.join(join_string) end

但是当我尝试使用它时:

query.join("LEFT JOIN task_limits ON tasks.task_limit_id = task_limits.id").preload(:task_limit)

我收到该方法不存在的错误:

  在tmp / 1537794230627_console.cr:2中的

:没有重载匹配类型为String的'Crecto :: Repo :: Query#join'   重载是:    -Crecto :: Repo :: Query#join(join_associations:Array(Symbol))    -Crecto :: Repo :: Query#join(join_association:Symbol)

     

query = query.join(“左联接task_limits开启task.task_limit_id = task_limits.id”)。preload(:task_limit).where(id:[43,46])

如何预加载与LEFT JOIN的关联?

0 个答案:

没有答案