Rails ActiveAdmin에서 값을 입력하려고 하면 ActiveModel::ForbiddenAttributesError가 발생합니다.


기본적인 모델의 어드민 구현을 위해서 아래와 같이 ModelName을 수정할 수 있는 파일을 만들었습니다.

ActiveAdmin.register ModelName do
  menu priority: 2, label: 'aaa', parent: 'bbb'
end

편집 화면까지 잘 들어가 지는데 새로운 레코드를 생성하려고 하면 ActiveModel::ForbiddenAttributesError가 발생하네요.

ActiveModel::ForbiddenAttributesError /Users/@@/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activemodel-4.2.6/lib/active_model/forbidden_attributes_protection.rb:21:in sanitize_for_mass_assignment' /Users/@@/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/activerecord-4.2.6/lib/active_record/attribute_assignment.rb:33:inassign_attributes'

왜 이런걸까요?

  • 2016년 07월 08일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

조회수 153


1 답변


좋아요
1
싫어요
채택취소하기

Rails 4 에서는 strong parameters를 사용하기 때문에 허용되지 않은 attribute 가 있으면 ActiveModel::ForbiddenAttributesError 가 납니다.

그래서 ActiveAdmin에서도 permit_params을 꼭 넣어줘야 합니다.

ActiveAdmin.register ModelName do
  permit_params : attr1, : attr2, :etc //<-- 이 줄을 넣으세요. 

 // attr1, attr2에 실제 사용하는 attribute 이름으로 바꿔서 넣으세요. 
end
  • 2016년 07월 08일에 작성됨
    안드로이드, 루비온레일즈

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close