Rails 3 마이그레이션에서 열거 형 열을 어떻게 설명합니까?
Rails 3 마이그레이션에서 열거 형 열을 어떻게 설명합니까?
Rails 4.1 에는 현재 enum 이 포함되어 있습니다 !
그냥 쓸 수 있습니다
class User < ActiveRecord::Base
enum status: [ :admin, :user, :banned ]
end
마이그레이션 쓰기
t.integer :status
Rails 3 및 4.0
제 생각에 가장 좋은 해결책은 simple_enum gem입니다.
Rails 3 마이그레이션에서 다음을 수행 할 수 있습니다.
class CreateFoo < ActiveRecord::Migration
def change
create_table :foo do |t|
t.column :foobar, "ENUM('foo', 'bar')"
end
end
end
이렇게하면 "foobar"열과 값이있는 테이블이 생성됩니다.
다음을 사용하여 열거 형 열을 설명 할 수 있습니다.
t.column 'role', 'user_role'
다음과 같이 열거 형을 만들었습니다.
execute "CREATE TYPE user_role AS ENUM ('consultant', 'admin');"
데이터베이스 검사 :
Column | Type | Modifiers | Storage | Stats target | Description
---------------+------------------------+-----------+----------+--------------+-------------
role | user_role | | plain | |
같은 것
class User < ActiveRecord::Base
validates_inclusion_of :status, :in => [:active, :inactive]
def status
read_attribute(:status).to_sym
end
def status= (value)
write_attribute(:status, value.to_s)
end
end
나는 enumerated_attribute gem을 좋아합니다 : https://github.com/jeffp/enumerated_attribute
모델, 개체 및보기를 쉽게 열거 할 수 있습니다.
레일 3.1에서 잘 작동합니다.
이것도 작동합니다 ....
add_column :table_name, :column_name, "enum('abc','def','ghi')", :default => 'abc'
enum_fu gem을 사용하겠습니다 : https://github.com/ikspres/enum_fu
나를 위해 일한 것은 기호에서 정수로 매핑하는 것이 었습니다.
TYPE_MAP = { type_one: 1, type_two:2, another_type:3 }
def type
TYPE_MAP.key(read_attribute(:type))
end
def type=(s)
write_attribute(:type, TYPE_MAP[s])
end
그러나 컨트롤러의 경우 다음과 같이 다시 매핑해야합니다.
def create
@cupon_type = CuponType.new(params[:cupon_type])
@cupon_type.type = params[:cupon_type][:type].to_sym
객체에 대한 첫 번째 생성을 재정의 하는 .to_sym에 유의하십시오 (제 경우에는 쿠폰이었습니다).
이제 다음과 같이 사용할 수 있습니다.
c.type == :type_one
c.type = :type_two
active_enum을 살펴보십시오 .
나는 그것이 당신의 필요에 맞다고 생각합니다.
enum_column을 사용하여 활성 레코드에 열거 지원 추가
https://github.com/mdsol/enum_column
t.enum :file_type ,:limit => [:jpg, :png, :gif] ,:default => :gif
'code' 카테고리의 다른 글
Python에서 변수 이름으로 밑줄 _ (0) | 2020.11.21 |
---|---|
HTML 5 비디오 또는 오디오 재생 목록 (0) | 2020.11.21 |
Angular.js 및 HTML5 날짜 입력 값 — Firefox에서 날짜 입력에 읽을 수있는 날짜 값을 표시하는 방법은 무엇입니까? (0) | 2020.11.21 |
SQL Server에서 외래 키가 자동으로 인덱싱됩니까? (0) | 2020.11.21 |
PowerShell에서 $ Error를 지우는 방법은 무엇입니까? (0) | 2020.11.21 |