Thứ Năm, 11 tháng 9, 2014

Model - Các bước khai báo một Model trong Ruby on Rails

Một Model trong RoRs thường muốn nói đến mối liên quan đến Model_Class của chính nó. Mỗi Model được Map ( liên kết ) với một Database Table tương ứng.
Nhắc lại: Tên Model viết Chữ Hoa chữ cái đầu và phải ở số ít trong Tiếng Anh. Sau khi khai báo Model xong thì RoRs sẽ tự động tạo ra một Database Table tương ứng có tên giống tên Model nhưng được viết thường và ở số nhiều.
Sau đây là 3 bước cơ bản trong việc khai báo Model mới trong RoRs.

Bước 1: Khai báo Model và cấu trúc dữ liệu Database Table cho Model

- Vào môi trường Command Line ( Git Bash )

- Vào Module tương ứng
$ cd TenModule # cũng là một thư mục

- Khai báoModel mới tên User
$ rails generate model User email:string password:string # Model tên User
Sau dòng lệnh trên RoRs sẽ tự động sinh ra một Database Table tên users, trong Table users mỗi Row ( hàng ) sẽ có 2 trường dữ liệu, trường thứ nhất tên email có kiểu dữ liệu là string, trường thứ hai tên password có kiểu dữ liệu cũng là string.

Mỗi Model tạo ra trong RoRs sẽ liên hệ đến một Class chứa trong \app\models\TenModel.rb. Class có nội dung sau:
class User < ActiveRecord::Base
end

Đồng thời thông tin khai báo Database Table users cũng như các trường dữ liệu email, password sẽ thể hiện trong file \db\migrate\day_so_xxx.create.users.rb. Nội dung file này là:
class CreateUsers < ActiveRecord::Migration 
  def self.up 
    create_table :users do |t| 
      t.string :email 
      t.string :password 
 [...Bổ Sung Trường Dữ Liệu ...]
      t.timestamps 
    end 
  end 
  def self.down 
    drop_table :users 
  end 
end 

Việc tạo ra Database Table users sẽ do Class tên CreateUsers đảm nhiệm ( đây chính là bước chủa bị của RoRs ). Đến thời điểm này thì Database Table users vẫn chưa chính thực tạo ra. Nó chỉ được tao ra khi chúng ta thực hiện bước tiếp theo. Tại thời điển này, các bạn hoàn toàn có thể bổ sung các trường dữ liệu mới cho Table users ngay tại  [...Bổ Sung Trường Dữ Liệu ...] 

Chú ý: Khi một Database Table của một Model được khỏi tạo thì có 1 trường dữ liệu được RoRs tạo ra theo mặc định đó là id.
id: Dùng làm khoá chính của Database Table. Bất kỳ Database Table nào cũng có khoá chính này.

Bước 2: Chính thức tạo ra Database Table users trong Database.
$ rake db:migrate # chạy tất cả các file trong thư mục \app\models\
Sau dòng lệnh này thì Class CreateUser trong file \db\migrate\day_so_xxx.create.users.rb được chạy để khởi tạo Database Table users cho Model User.

Bước 3: Khai báo quan hệ giữa Model với các Model con của nó. 
Vào trong Class của Model vừa tạo bằng cách mở file \app\models\TenModel.rb. Nội dung ban đầu:
class User < ActiveRecord::Base
end
Bổ sung quan hệ với các Model con của nó vào trong Class trên như sau:
class User < ActiveRecord::Base
has_one :profile 
end

Vậy. với việc bổ sung dòng code has_one :profile ta đã khai báo cho RoRs biết, Model User có một Model con tên Profile, với mối quan hệ has_one. Và Database Table của Model Profile phải được khai báo một trường dữ liệu tên user_id được xem như một khoá ngoại ( Primary_key ) liên kết với Database Table users của Model User.

Chú ý: KHi cần khai báo một Model là con của Model User. Trong ví dụ này là Model Profile
Khai báo Model Profile như sau:
$ rails generate model Profile user_id:integer name:string birthday:date
bio:text color:string twitter:string
Khai báo Model Profile là con của Model User
Mở file \app\models\profile.rb. Bổ sung dòng code belongs_to :user
class Profile < ActiveRecord::Base
belongs_to :user
end

Các mối quan hệ được khai báo có thể là ( gồm 1 hay nhiều ):
has_one 
has_many 
belongs_to 
has_and_belongs_to_many 

Không có nhận xét nào:

Đăng nhận xét