gpt4 book ai didi

elixir - 在混合任务中使用 Ecto

转载 作者:行者123 更新时间:2023-12-01 08:51:13 26 4
gpt4 key购买 nike

在 Phoenix 框架应用程序中,我有一个模型 Product 和字段 name。我想创建一个列出所有产品名称的混合任务。

在 Ruby on Rails 中,这将是解决问题的代码:

namespace :list do
desc "List all products"
task products: :environment do
Product.all.each do |product|
puts product.name
end
end
end

在 Phoenix,我什至无法从数据库中获取所有产品的列表。这是任务代码:

lib/mix/tasks/list.product.ex

defmodule Mix.Tasks.List.Product do                                    
use Mix.Task
import Mix.Ecto
alias App.Repo
alias App.Product

def run(_args) do
products = Repo.all(Product)
end
end

当我运行此任务时,我收到以下错误消息:

** (UndefinedFunctionError) function Ecto.Queryable.__using__/1 
is undefined or private

在这个混合任务中我需要做什么才能从数据库中获取所有产品?

最佳答案

run 方法的顶部添加 ensure_started(Repo, [])。您可能还想为某些查询表单import Ecto.Query

defmodule Mix.Tasks.List.Product do                                    
use Mix.Task
import Mix.Ecto
import Ecto.Query
alias App.Repo
alias App.Product

def run(_args) do
ensure_started(Repo, [])
products = Repo.all(Product)
end
end

关于elixir - 在混合任务中使用 Ecto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41462460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com