- has_one (bire-bir)
- has_many (bire-çok )
- has_and_belongs_to_many (çoka-çok )
Örnek 1
Burda her filmin tek bir imdb puanı oldugu için imdb ile Movie modeli bire-bir ilişki türündedir. Bir yılda birden fazla film çekilmiş olabilir, ama filmin gösterim yılı tekdir. Bu nedenle Movie modeliyle Yıl modeli bire-çok ilişki türündedir. Bir film birden fazla kategori türünde olabilir, Bir kategoridede birden fazla film olabilir, Movie modeliylede Category modeli çoka-çok ilişki türünedir.
Birebir ilişki (Movie-Imdb)
$ rails generate model movie name:string producer:string
$ rails generate model imdb score:integer vote_count:integer movie_id:integer
Movie.cs => has_one:imdb
Imdb.cs => belogs_to: movie
Veri Ekleme:
Movie.create(name: 'ben efsaneyim', producer:'will smith')
Movie.create(name: 'v for vandetta', producer:'aliveli')
Imdb.create(vote_count:1234,score:8.0)
ilişkilendirme:
film=Movie.find(1)
film.imdb=Imdb.create(score: 12, vote_count: 12)
Filmin Imdbsi
Movie.find_by_name('v for vandetta').imdb.score
Bire-çok ilişki (Year-Movie):
$ rails generate model year year:integer
$ rails generate migration AddYearToMovie year_id:integer
Year.cs => has_many:movies
Movie.cs => belogs_to: year
Veri Ekleme
Year.create( year: 2012)
İlşkilendirme
Year.find_by_year(2012).movies<<Movie.find_by_name('ben efsaneyim')
2012 yılında gösterime giren filmler?
Year.find_by_year(2012).movies
Çoka- Çok İlişki(Movie-Kategori)
$ rails generate model category type:string
$ rails generate migration CreateJoinTableCategoryMovie category movie
movie.cs => has_and_belongs_to_many :categories
category.cs => has_and_belongs_to_many :movies
Kategori oluşturalım:
Category.create(name:'gerilim')
Gerilim türüne filmler ekleyelim:
Category.find_by_name('gerilim').movies<<Movie.find(1)
Category.find_by_name('gerilim').movies<<Movie.find(2)
Gerilim türündeki filmler:
Category.find_by_name('gerilim').movies
Rails SqlLite Diagram
Örnek 2:
Section-Engineer= Bire-Çok
Engineer- Project= Çoka-Çok
Engineer- Ssk = Bire-bir
Rails SqlLite Diagram