如何找到与ActiveRecord计算结果相关联的对象而不是值?
例如,我有@parent有很多孩子.我想找到具有最大'价值'的孩子.
我知道我可以做@ parent.children.maximum(:value),但这会返回最大值.是否有类似于maximum和minimum的方法返回整个对象而不是值,以便我可以使用最大对象中的不同字段?
我是新手使用Ecto和Elixir而且我遇到了一个我无法解释的错误.我的代码看起来就像Ecto README中的示例.
以下是Ecto模型和查询的模块
defmodule Registration do
use Ecto.Model
schema "registrations" do
field :user_id, :string
field :created_at, :datetime, default: Ecto.DateTime.local
field :updated_at, :datetime, default: Ecto.DateTime.local
end
end
defmodule RegistrationQuery do
import Ecto.Query
def by_user(user_id) do
query = from r in Registration,
where: r.user_id == ^user_id,
select: r
Repo.all(query)
end
end
Run Code Online (Sandbox Code Playgroud)
以下是我调用查询函数的方法
registrations = Repo.all RegistrationQuery.by_user("underwater")
Run Code Online (Sandbox Code Playgroud)
这一切似乎与Ecto文档完全一致,我找不到任何其他说法.但是我收到以下错误.
protocol Ecto.Queryable not implemented for [%Ensalutilo.Registration{user_id: "underwater"}]
Run Code Online (Sandbox Code Playgroud) 在现有Parent的show视图中,我想有一个表单来创建Children.
我已经想出了如何创建一个Child表单并将其包含在Parent的节目中,而不是如何排除parent_id字段.如何在不使用表单字段的情况下将parent_id分配给子项?