2016-01-11 2 views
0

У меня есть модели User, Tagging, TagКак объединить модель с помощью двухуровневой ассоциации в Rails?

User.rb

has_one :tagging  

Tagging.rb

belongs_to :user 
belongs_to :tag 

Tag.rb

has_many :taggings 

Я хочу указать пользователя на основе имени тега. Как это сделать?

В настоящее время, я знаю, как сделать сферу в рамках одного уровня ассоциации, например:

scope :with_tag_id, -> (tag_id) {joins(:tagging).where(taggings: {tag_id: tag_id})}

Но как сделать больше уровней?

ответ

0

Попробуйте

class User < ActiveRecord::Base 

    scope :by_tag_name, ->(tag_name) { joins(tagging: :tag).where("tags.name=?", tag_id, tag_name) 

end 
Смежные вопросы