On Wed, Feb 16, 2022 at 6:14 AM [email protected] <[email protected]> wrote:
> I'm trying to define a subset in a Model:
>
> class User < Sequel::Model
> subset :active, Sequel.~(:inactive)
> # proc
> subset :name, -> (name) { where( Sequel.like(:username,
> "%#{params[:name]}%") ) }
> end
>
> When I attempt to use the model, I get an error:
>
> `<class:User>': undefined method `subset' for User:Class (NoMethodError)
>
> What am I not understanding?
>
That the method does not exist. Since Sequel 5, subset is only defined
inside dataset_module blocks. If you want to use it at class level, you
need to use the def_dataset_method plugin.
> Are procs allowed?
>
Not in the way you are using them. You want to do:
class User < Sequel::Model
dataset_module do
subset :active, Sequel.~(:inactive)
def name(name)
# Note that this probably won't work anyway, since params is not defined.
# You probably want to use name instead of params[:name], and call this
# method with params[:name]
where( Sequel.like(:username, "%#{params[:name]}%") )
end
end
end
The block you pass to subset ends up being passed to the Dataset#where
method, but it isn't passed the arguments you are passing to where.
Thanks,
Jeremy
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sequel-talk/CADGZSSekCAd8juduBbhAY5UaqVEKOCaQuMBJ0rds_2F6DmfCMw%40mail.gmail.com.