ben

OMÜ , Bilgisayar Mühendisliği, 13'

16 Kasım 2015 Pazartesi

has_many_through

    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.