Rummage Ecto 使用教程
项目介绍
Rummage Ecto 是一个轻量级但功能强大的框架,用于对 Ecto 查询进行搜索、排序和分页操作。它通过使用钩子(Hooks)来实现这些操作,钩子是实现了 Rummage Ecto 钩子行为的模块。每个操作(搜索、排序和分页)都有其对应的钩子定义在 Rummage 中。Rummage Ecto 是完全可配置的,如果你不喜欢某个钩子,可以配置 Rummage 不使用它,并编写自己的自定义钩子。
项目快速启动
安装
首先,将 Rummage Ecto 添加到你的项目依赖中:
def deps do
[
{:rummage_ecto, "~> 2.0.0-rc.0"}
]
end
配置
在 config/config.exs
文件中添加以下配置:
config :rummage_ecto, Rummage.Ecto,
repo: MyApp.Repo,
per_page: 10
基本使用
在模型中使用 Rummage Ecto:
defmodule MyApp.Product do
use Ecto.Schema
import Ecto.Query
schema "products" do
field :name, :string
field :price, :float
end
def search(params) do
MyApp.Product
|> Rummage.Ecto.rummage(params)
end
end
应用案例和最佳实践
自定义钩子
如果你想要覆盖 Rummage 的默认钩子,可以在配置文件中添加自定义钩子:
config :rummage_ecto, Rummage.Ecto,
repo: MyApp.Repo,
search: MyApp.SearchModule,
paginate: MyApp.PaginateModule
高级用法
Rummage Ecto 允许你为每个模型配置不同的分页大小:
config :rummage_ecto, Rummage.Ecto,
repo: MyApp.Repo,
per_page: 10
你也可以在模型文件中覆盖这个配置:
config :rummage_ecto, Rummage.Ecto,
per_page: 20
典型生态项目
Rummage Ecto 通常与 Rummage Phoenix 一起使用,以在 Phoenix 框架中实现搜索、排序和分页功能。Rummage Phoenix 提供了 HTML 助手来简化这些操作的前端实现。
Rummage Phoenix
Rummage Phoenix 的安装和配置与 Rummage Ecto 类似,你可以在其官方文档中找到详细信息:
通过结合使用 Rummage Ecto 和 Rummage Phoenix,你可以在 Elixir 和 Phoenix 项目中实现强大的搜索、排序和分页功能。