So you mean to use #extend on the instance of the dataset?
On Monday, June 1, 2020 at 11:11:49 PM UTC+3, Jeremy Evans wrote:
>
> On Monday, June 1, 2020 at 9:43:12 AM UTC-7, Aryk Grosz wrote:
>>
>> Is there a way change the dataset module as you are joining multiple
>> associations and tables?
>>
>> For example:
>>
>> class User < Sequel::Model
>>
>> dataset_module do
>> def with_min_age(min_age, u = Sequel[model.table_name])
>> condition = Sequel.lit("? <= current_date - (? || '
>> years')::interval", u[:birth_date], min_age)
>> condition = Sequel.|({min_age => nil}, condition) if
>> min_age.is_a?(Sequel::SQL::Expression)
>> where(condition)
>> end
>> end
>> end
>>
>>
>> So I can use this as users_dataset.with_min_age(4).
>>
>> But I'd like to be able to also do:
>>
>> books_dataset.association_join(:user).with_min_age(Sequel[:books][:min_age_required],
>>
>> Sequel[:user])
>>
>> To be able to reuse the methods.
>>
>> Is something like this possible?
>>
>
> Sure. You can pass a module to dataset_module
>
> module Foo
> def with_min_age(min_age, u = Sequel[model.table_name])
> condition = Sequel.lit("? <= current_date - (? || '
> years')::interval", u[:birth_date], min_age)
> condition = Sequel.|({min_age => nil}, condition) if
> min_age.is_a?(Sequel::SQL::Expression)
> where(condition)
> end
> end
>
> User.dataset_module Foo
> Book.dataset_module Foo
>
>
> Of course, with books, the method may not make sense until you join to the
> users table.
>
> 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/10074e08-58ca-47b1-a18d-f665784f3114o%40googlegroups.com.