alexslade
I have Document resource with attribute :labels, {:array, :string}. I’m trying to build a filter that will match a single label.
E.g.
%{labels: ["foo"]}
This returns documents with on a single “Foo” label. I want all documents that have at least “Foo”, and other labels. I have this example from the source
|> Ash.Query.filter(title in cool_titles)
But I can’t seem to get this reverse format to work in a map-based filter. (I’m using that because I’m filtering with user input, so wanted to keep using Ash.Filter.parse_input/2).
Thanks for any advice.
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
So i have been using ash framework for a while and i love it. However currently the issue im having with ash framework is the error handl...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Latest Ash Threads
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 4- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
alexslade
I might have answered myself here.
The docs warn about using
Ash.Filter.parse_input/2:But looking at the source for this function, it looks like this only does checking for the filter keys. That is, if I’m searching on a public attribute (
Labels) using user input for filter values, then this function doesn’t provide anything and I’m fine to just use an expression directly.Is that right?
zachdaniel
It depends
When you have things like field policies or related resource policies, we can tell when a field from
parse_input/2is used and will use that to adjust the filters to scope them to what a user can see. If you doAsh.Query.filter(related.field in ^user_suppleid_list), we don’t apply a filter that “the related thing is visible to the user in the first place”, nor replace the value with the expression corresponding to field policies.My recommendation is to create a calculation on your resource called
has_label, and use that.then you can do:
The docs should definitely improve in this regard. Especially documenting how to do calculations with input (that
inputis a special field to provide arguments to the calculation)zachdaniel
Something we could also do to make this better would be to make an
input_reftemplate helper, so you could sayAsh.Query.filter(^label in ^input_ref(:labels))to get the same protections around field access while using the expression syntax.alexslade
Thanks for the pointers
(I updated the PR to reflect all this, and the calculation works nicely)