class User < AR::Base
has_many :ticks
has_many :sections, :through => :ticks
end
class Section < AR::Base
has_many :ticks
has_many :users, :through => :ticks
end
class Tick < AR::Base
belongs_to :user
belongs_to :section
validates_uniqueness_of :user_id, :scope => :section_id
end
Теперь, чтобы найти разделы, отмеченные пользователем, вы делаете user.sections
, или чтобы найти всех пользователей, которые отметили определенный раздел, который вы делаете section.users
Здесь у вас есть отношение «многие ко многим» (у пользователя может быть много разделов, а раздел может принадлежать многим пользователям), поэтому для их сопоставления требуется модель соединения. В этом случае модель Тика выступает в качестве модели соединения.