2014-04-09 8 views
1

포도를 사용하여 json에서 새 ActiveRecord을 만드는 올바른 방법은 무엇입니까? 내 사용자 모델에 attr_accessible을 사용하여 ActiveModel::ForbiddenAttributesError을 피하거나 어떻게 작동합니까?JSON 본체의 Ruby On Rails - Grape - ActiveRecord

레일 4.0.4와 루비 1.9.3p545를 사용하고 있습니다.

모델

class User < ActiveRecord::Base 
    #maybe attr_accessible?? 
end 

POST 바디

{ 
    "first_name": "John", 
    "last_name": "Doe" 
} 

포도

version :v1, :format => :json 
... 
post do 
    #what goes here? 
    user = User.new params 
    user.save! 
end 

답변

3

권장되는 방법 것 대량 할당을 사용하지 말고, 각 매개 변수를 단편적으로 지정해야합니다. 마치 Grape README 예제에서와 같이 수행됩니다.

대량 할당 사용에 대해 강하게 생각하는 경우 protected_attributes gem을 사용하면 attr_accessible 기능을 사용할 수 있습니다.

하지만 대량 할당을 사용하려고하는 매개 변수가 너무 많으면 생성되는 리소스를 리팩토링해야하는 냄새가 날 수 있습니다. 어떤 방법이 나쁜, 도우미에서 end` 을 : || = 선언 (거짓 PARAMS는 include_missing)`데프 permitted_params에게 @permitted_params을 :

+1

내가 사용하여 그것을 해결 한? – ejohansson

+0

그것은 문제가되는 매개 변수의 양이 아니며, 내 devtime을 죽이는 것은 계속해서 다시 고려하는 것입니다. 일단 내가 만족의 지점에 도달했다면 나는 그것을 잠그고 정적으로 매개 변수를 할당 할 것이다. 감사. 허용/선언 된 매개 변수를 사용하는 – ejohansson

+0

은 모델 기반 접근 방식을 사용하는 것보다 낫습니다. 주의 사항은 Rails의 강력한 매개 변수와 같습니다. 모든 것을 허용하는 것이 유혹적입니다.)하지만 이것이 일시적으로 가려면 단지 좋은 것입니다. – oliverbarnes