from_self solved it, thank you!

On Tuesday, November 19, 2019 at 5:29:15 PM UTC-5, Jeremy Evans wrote:
>
> On Tuesday, November 19, 2019 at 12:31:21 PM UTC-8, Jake wrote:
>>
>> I have some dataset_module methods defined within a model class. 
>>
>> class Example
>>   dataset_module do
>>     def method_a
>>       where(...) // Standard where filter only using this table
>>     end
>>
>>     def method_b
>>      join(:example_2, ...)
>>       .where(Sequel[:example_2][:some_column] => 'some_value')
>>     end
>>   end
>> end
>>
>> If I call `Example.method_a.method_b.all` it returns an array of sort of 
>> modified instances of Example with the joined table's fields as well. Is 
>> there any way to keep the returned model instances as just normal instances 
>> of that model (as if nothing was joined)? I know you can do 
>> `select_all(:example)` within the method_b but if there is a column that is 
>> in both of these tables you cannot for example, call 
>> `Example.method_a.method_b.select(:duplicate_column)`. 
>>
>
> You could try:
>
> def method_b
>   join(:example_2, ...).
>     where(Sequel[:example_2][:some_column] => 'some_value').
>     select_all(:example).
>     from_self(:alias=>:example)
> end
>
> However, if you don't want to join, then why you are joining?  You may be 
> better off using a subselect:
>
> def method_b
>   where(:fk=>db[:example_2].select(:pk).where(some_column: 'some_value'))
> end
>
> For appropriate values of :fk and :pk.
>
> 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/1d2358ca-6d6b-4b57-85a9-8f06353cb1a3%40googlegroups.com.

Reply via email to