ActiveRecord’ta ilişkilendirme one-to-one(1:1), one-to-many(1:n), ve many-to-many(n:m) şeklinde modellenir. ActiveRecord’ta modelleme aşağıdaki gibi isimlendirilir.
- belongs_to (one-to-one ilişki)
- has_one (one-to-one ilişki)
- has_one : through (one-to-one ilişki modellerin yaratılma şekli farklı)
- has_many (one-to-many ilişki)
- belongs_to (one-to-many ilişki)
- has_many :through (many-to-many ilişki)
- has_and_belong_to_many (many-to-many modellemenin alternativ yolu)
‘belongs_to’ ilişki
one-to-one(1:1) veya one-to-many(1:n) ilişkileri modellemek için kullanılır. Foreign Key’e sahip olan modelde kullanılır.
class Ofis '<' ActiveRecord::Base
belongs_to : yonetici
end
‘has_one’ ilişki
one-to-one ilişkileri modellemek için kullanılır. İlişkinin diğer tarafını ifade eder.
class Yonetici '<' ActiveRecord::Base
has_one : ofis
end
‘has_one:through’ ilişki
class Network '<' ActiveRecord::Base
has_one : group
has_one :user, :through => : group
end
class Group '<' ActiveRecord::Base
belongs_to: network
has_one :user
end
class User '<' ActiveRecord::Base
belong_to : group
end
‘has_many’ ilişki
one-to-many ilişkileri modellemek için kullanılır.
class Yazar '<' ActiveRecord::Base
has_many : kitap //Cogul taraf buraya gelir, Bir yazarın birden çok kitabı var.
end
class Kitap '<' ActiveRecord::Base
belong_to : yazar // Bir kitap sadece bir yazara ait olabilir.
end
‘has_many :through’ ilişki
many-to-many ilişkileri modellemek için kullanılır.
class Doktor '<' ActiveRecord::Base
has_many : doktor_hasta
has_many :hasta, :through => : doktor_hasta
end
class Hasta '<' ActiveRecord::Base
has_many : doktor_hasta
has_many :doktor, :through => : doktor_hasta
end
class Doktor_Hasta '<' ActiveRecord::Base
belong_to : doktor
belong_to : hasta
end
‘has_and_belongs_to_many’ ilişki
many-to-many ilişkileri için alternativ modellemek için kullanılır.
class Doktor '<' ActiveRecord::Base
has_and_belongs_to_many : hasta
end
class Hasta '<' ActiveRecord::Base
has_and_belongs_to_many : doktor
end
Hiç yorum yok:
Yorum Gönder