ben

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

23 Ağustos 2015 Pazar

Rails-Model ilişkileri

Ilişki Türleri

  • 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