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일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 요즘은 개발은 주로 레일즈 사이트 수정하는 일을 하고, 예전에는 모바일 게임도 조금 만들어 봤습니다.

조회수 266


Banner slack 2x iegsyt

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