rails에서 모델에 enum을 정의하는데 "You tried to define an enum named "stage" on the model "Challenge", but..."이라는 에러가 발생합니다.
조회수 1069회
모델에 다음과 같은 enum을 정의하려고 하는데요.
class Model < ActiveRecord::Base
enum stage: {member_only: 0, public: 1, demo: 2}
다음과 같은 에러가 발생합니다.
You tried to define an enum named "stage" on the model "@@@@", but this will generate a class method "public", which is already defined by Active Record.
왜그런걸까요?
1 답변
-
자답입니다.
모델에 enum을 만들면 아래와 같이 enum의 각 이름으로 메소드가 생깁니다.
class Conversation < ActiveRecord::Base enum status: [ :active, :archived ] end # conversation.update! status: 0 conversation.active! conversation.active? # => true conversation.status # => "active" # conversation.update! status: 1 conversation.archived! conversation.archived? # => true conversation.status # => "archived"
그래서 이미 다른 메소드 이름으로 사용중이면 enum에서 사용할 수가 없나보네요.
댓글 입력