I will assess the need for it more as the application grows, but I already wished for it multiple times. In case I find it valuable enough, I will make an external plugin. That's great about Sequel and open source, I can just create my own plugin, and, unlike with ActiveRecord, I can use a well defined plugin system which is easily understandable.
On Sat, May 2, 2015 at 8:18 PM Jeremy Evans <[email protected]> wrote: > On Saturday, May 2, 2015 at 6:09:36 AM UTC-7, Janko Marohnić wrote: >> >> Hi Jeremy, >> >> There are often situations where you want to do subselects with >> associated tables, like getting a count from a has_many association: >> >> Quiz.select_append(Question.where(quiz_id: :quizzes_id).select{count >> {}.*}.as(:questions_count)) >> >> However, I don't like here that you need to repeat the ID joining. If you >> specified `Quiz.has_many :questions`, the Quiz class already knows what is >> the associated class, and how are the foreign and primary keys matched. So >> it doesn't feel DRY. >> >> I read an answer that you gave to one previous question >> <https://groups.google.com/forum/#!topic/sequel-talk/muJ14cXsnpA>, where >> you gave 3 different ways how to get a count for a has_many associations. >> However, I find it a bit difficult to wrap my head around using joins and >> grouping for this task, I would much rather use subselects. >> >> My proposition would be do add something like >> Sequel::Model.association_select, so that you can do >> >> class Quiz < Sequel::Model >> has_many :questions >> >> dataset_module do >> def with_questions_count >> select_append(association_select(:questions).select{count{}.*}.as(: >> questions_count)) >> end >> end >> end >> >> So, `association_select(:questions)` here would be an equivalent of >> `Question.where(quiz_id: quizzes_id)`. For the partical case of counts, I >> decided that I'm much better of with counter caches (using >> sequel_postgresql_triggers), but for other subselects I would love this >> feature. I think it really shines when you have more complex associations, >> for example with custom datasets, using pg_array_associatons etc. >> >> What do you think about this idea? >> > > I think this would have fairly limited applicability, so if it was > included in Sequel, it would have to be in a plugin. I'm curious what > other people think of the idea, though. Does anyone have an opinion about > whether something like this should be shipped with Sequel? > > It may be worthwhile to implement this as an external plugin that people > could try out. It would be fairly easy to merge it into Sequel later if > there is community support for it. > > Thanks, > Jeremy > > -- > You received this message because you are subscribed to a topic in the > Google Groups "sequel-talk" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sequel-talk/QUSNa61hczA/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sequel-talk. > For more options, visit https://groups.google.com/d/optout. > -- 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 http://groups.google.com/group/sequel-talk. For more options, visit https://groups.google.com/d/optout.
