【发布时间】:2016-09-21 16:00:20
【问题描述】:
我有一个带有 has_many 关联的 ecto 模型。我想在默认情况下用一些查询来定义这个关联。
喜欢
defmodule MyApp.User do
use MyApp.Web, :model
schema "users" do
has_many :comments, MyApp.Comment
end
end
我想获取不是 deleted 的 cmets(删除的是 MyApp.Comment 架构的布尔字段,它应该等于 false)。实现这一目标的方法是什么?
我的尝试#1
我试过了
has_many :comments, Ecto.Query.from(c in MyApp.Comment, where: v.deleted == false)
但我得到了
(ArgumentError) association queryable must be a schema or {source, schema}, got: #Ecto.Query
【问题讨论】:
-
我认为这是不可能的。 Ecto 没有像活动记录那样的范围概念。我可以建议的最接近的方法是在
user.ex中按照active_comments的行创建一个函数。