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
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 ...]
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.
Bước 3: Khai báo quan hệ giữa Model với các Model con của nó.
$ 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 UserKhai báo Model Profile như sau:
$ rails generate model Profile user_id:integer name:string birthday:date
bio:text color:string twitter:string
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
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