On 4 September 2014 18:45, Michael Bostler <lists@ruby-forum.com> wrote:
> Hi all,
>
>
> Say I have an article class that has one main tag, but can also be
> associated with multiple secondary tags. Something like schema listed
> below. How can I implement the scope method below?
>
>
> Basically I want one method where I can return ALL articles related to a
> tag, regardless of whether it is a primary tag relationship or secondary
> tag relationship.
You might consider a different schema to that you have shown below, so
that article has_many tags through tag_listings, and in tag_listings
have a flag to indicate a primary tag (or not). Then you get the
primary tag by selecting the tag with that flag set. Then the problem
you have asked about becomes not a problem (which is the best sort).
Still not ideal I know, as you have to guard against the possibility
of inadvertently ending up with multiple primary tags. Perhaps there
is a better solution.
Colin
>
>
> Many Thanks!
>
>
> class Article < ActiveRecord::Base
> belongs_to :primary_tag,
> :class_name => "Tag"
>
> has_many :secondary_tag_listings
>
> has_many :secondary_tags,
> :through => :secondary_tag_listings,
> :class_name => "Tag"
>
> scope :all_with_tag, lambda { |tag_name|
> # TODO: how to find all with either primary OR secondary tags
> # as tag_name?
> }
> end
>
>
>
>
> class SecondaryTagListings < ActiveRecord::Base
> belongs_to :article
> belongs_to :tag
> end
>
>
>
>
> class Tag < ActiveRecord::Base
> has_many :primary_articles,
> :class_name => "Article"
>
> has_many :secondary_tag_listings
>
> has_many :secondary_articles,
> :through => :secondary_tag_listings,
> :class_name => "Article"
> end
>
> --
> Posted via http://www.ruby-forum.com/.
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/aced24f771ed6171143cc3dae41231b4%40ruby-forum.com.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLtbVQ4B%2BYMkhyQQiY4bNwwU_oLfO9PgGcKMcO0f6e2pGA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment