2009-07-16 40 views
17

Tôi muốn tạo mô hình và bảng cơ sở dữ liệu tương ứng trong Rails bằng cách sử dụng tập lệnh của trình tạo. Bảng cơ sở dữ liệu có một trường có kiểu "enum". Làm thế nào tôi có thể tạo ra nó?Làm thế nào để tạo ra một mô hình với một trường kiểu enum?

định nghĩa Bảng trong SQL:

create table works { 
    id int unsigned not null auto_increment, 
    nickname varchar(20) not null, 
    sex enum('m', 'f') not null 
}; 

Lệnh phát Rails:

script/generator work nickname:string sex:(what should I write here?) 

Trả lời

5

Bạn chỉ có thể sử dụng một chuỗi và sau đó thêm xác nhận trên mô hình như thế này:

validates_inclusion_of : sex,: in =>% w (mf)

4

Thật không may, va các loại cột nắp là: số nguyên, phao, ngày giờ, ngày, dấu thời gian, thời gian, văn bản, chuỗi, nhị phân và boolean

Thử đặt cột thành chuỗi và sử dụng validates_inclusion_of.

+0

Liên kết không hoạt động. –

+0

@RishabhSinghal cảm ơn, tôi đã xóa liên kết bị hỏng. – erik

27

Rails 4.1 thêm ActiveRecord::Enum, mà giả lập enums sử dụng một cột integer -loại. Bạn có thể sử dụng chúng miễn là bạn sẵn sàng thay đổi kiểu cột thành số nguyên trong cơ sở dữ liệu.

Để sử dụng các enums, đưa integer trong lệnh tạo của bạn:

bin/rails generate Work nickname:string sex:integer 

Sau đó thêm một cuộc gọi đến enum trong file mô hình được tạo ra:

class Work < ActiveRecord::Base 
    enum sex: [ :male, :female ] 
end 

Xem Enum’s documentation để biết thêm chi tiết.

Các vấn đề liên quan