has-many through ilişkisi kullanım olarak has_and_belongs_to_many ilişkisine benzer ama habtm ilişkisinde aratabloyu sanal olarak tutarız ve bu sanal tablonun yapsını değiştiremez ekstra bir alan oluşturamazken, has_many through ilişkisinde ara tabloyu fiziksel olarak tutabiliriz, ve bu ara tabloya ekstra bilgi girebiliz.
User modeli, Role Modeli ve UserRole Modelimiz olsun.
terminal
rails g model user user_name
rails g model role role_name
rails g model user_role user_id:integer role_id:integer app_id:string
rake db: migrate
Model
user.rb
has_many :user_roles
has_many :roles ,through: :user_roles
role.rb
has_many :user_roles
has_many :users ,through: :user_roles
user_role.rb
belongs_to :user
belongs_to :role
console
User.create(user_name:"esra")
User.first.roles<<Role.create(role_name:"Yönetici")
User.first.roles<<Role.create(role_name:"Admin")
User.first.roles
User.first.user_roles
Aslında ikiside aynı sonucu verdi fakat , has and belongs to many ilişkisinde ara tabloyu göremez ve düzenleyemezdik.