2012-03-01 3 views
2

내가이 오류에 대해 많은 것을 읽어 속성 :레일 - 대량 할당 보호 할 수 없음은

WARNING: Can't mass-assign protected attributes: contact_id, country_id, winery 

그러나이 나타난 이유를 이해하지 않습니다. 레일즈 3.0.5를 사용했고 (당시 3.1으로 전환하고 싶지는 않습니다).

내 로그 :

Started POST "/ws/webapp/services/push_item" for 127.0.0.1 at Thu Mar 01 18:45:16 +0100 2012 
    Processing by Webapp::ServicesController#push_item as JSON 
    Parameters: {"wine"=>{"contact_id"=>"<null>", "country_id"=>"1", "id"=>"3FAE414B-97B2-4C05-8A02-8AAC3F3B89F6", "winery"=>"New wine"}, "authenticity_token"=>"Da/2MDivaxxmS1zb7x6EK63xARnd/RrpmFoWtsOHock=", "locale"=>"ws"} 
    Wine Load (0.4ms) SELECT `wines`.* FROM `wines` WHERE `wines`.`id` = '3FAE414B-97B2-4C05-8A02-8AAC3F3B89F6' AND `wines`.`user_id` = 1 LIMIT 1 
WARNING: Can't mass-assign protected attributes: contact_id, country_id, winery 
3FAE414B-97B2-4C05-8A02-8AAC3F3B89F6 
    SQL (0.2ms) BEGIN 
    SQL (0.2ms) ROLLBACK 
Completed 200 OK in 245ms (Views: 6.1ms | ActiveRecord: 9.5ms) 

그래서 요청 (업데이트) 작동하지 않습니다. contact_id, country_id, winery의 3 개 필드가 제 데이터베이스에 있습니다.

아이디어가 있으십니까? 당신은 아마이 곳과 같은 라인, 모델의 attr_protected을 사용하고

+0

확인을 클릭합니다. 매개 변수에 wine [: id]를 보내기 때문에 문제가있는 것으로 보입니다. 나는 지금 당장 보내는거야. 이드는 와인 매개 변수에서 나온거야. 괜찮아. –

답변

1

:

attr_protected :contact_id, :country_id, :winery 

당신이 그 특성을 질량을 할당 할 수 있도록하려면, 당신은 것을 제거해야합니다 선.

+1

아니요! 내 모델에서이 줄을 사용하지 않았습니다 ... 내 웹 사이트로 개체를 업데이트 할 수 있습니다. 위의 예는 장치에서 모델을 업데이트하기위한 것입니다. –

+0

어디서나 "attr_protected"없이이 문제가 발생했습니다. –

1

Rails는 CSRF/XSS 공격을 막기 위해 양식을 생성 할 때 인증 토큰을 사용합니다. 모바일 애플리케이션에서 전화를 거는 경우이 토큰은 표시되지 않으며 오류가 발생합니다. 앱이 레일 앱 외부 요청을 받아 들일 필요가있는 경우

, 당신은 사용하여 이러한 작업을 위해 이러한 보호를 해제해야합니다 :

protect_from_forgery :except => :update 

또는

skip_before_filter :verify_authenticity_token 
+0

내 기록을보고 authenticity_token을 보냅니다 ...;) –

관련 문제