On Friday, April 7, 2017 at 3:45:39 PM UTC-7, Jeremy Evans wrote:
>
> Currently, models can have any possible dataset.  Almost all models use 
> dataset that selects from a single table, but there are models that use a 
> joined dataset. The most common case for model joined datasets is models 
> using the class_table_inheritance plugin.
>
> In most cases, it should not be necessary to use a joined dataset. 
>  Instead, the joined dataset can be wrapped in a subquery, and the main 
> query just selects from the subquery. For example, this model with a joined 
> dataset:
>
>   class Foo <  Sequel::Model(DB[:foos].join(:bars, 
> :id=>:bar_id).select_all(:foos).select_append{bars[:name].as(:bar_name)})
>     SELECT foos.*, bars.name FROM foos INNER JOIN bars ON (bars.id = 
> foos.bar_id)
>   end
>
> can be changed to:
>
>   class Foo <  Sequel::Model(DB[:foos].join(:bars, 
> :id=>:bar_id).select_all(:foos).select_append{bars[:name].as(:bar_name)})
>     SELECT * FROM (SELECT foos.*, bars.name FROM foos INNER JOIN bars ON (
> bars.id = foos.bar_id)) AS foos
>   end
>
> One advantage of this is that you can now use unqualified values when 
> filtering:
>
>   Foo.first(:id=>1)
>
> I recently added support to the class_table_inheritance plugin for an 
> :alias option that automatically uses a subquery in this manner.
>
> Is there any user who uses joined datasets for models and would not be 
> able to deal with wrapping them in a subquery as described above?  If so, 
> please describe your situation and why wrapping in a subquery will not 
> work, so I can decide whether that is something we want to support going 
> forward.
>

I didn't get any response about this, but just yesterday someone mentioned 
an issue on IRC that was caused by a joined model dataset and prevented if 
the dataset was wrapped in a subquery.  So I've committed a change that 
deprecates using joined datasets as model datasets: 
https://github.com/jeremyevans/sequel/commit/8908bb1b03e62bc5316949ab115c51b993949df1

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 post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to