0

레일스 3의 동작은 3.1에 기반합니다. 3.2.12를 사용하고 있기 때문에 나이가 들었습니다. 관리자를 지정하지 않고 대량 할당을 시도 할 때 오류가 발생했습니다. 3.1과 3.2의 차이점이 있기 때문에 저자는 말했다. 다음 중 어떤 것을 사용하고 차이점은 무엇입니까? 컨트롤러관리자로 사용할 때 어떤 일이 발생합니까?

첫번째 방법

def create 
    @user = User.new(params[:user], :as => :admin) 
    if @user.save 
     flash[:notice] = "User has been created." 
     redirect_to admin_users_path 
    else 
     flash[:alert] = "User has not been created." 
     render :action => "new" 
    end 
    end 

및 모델

attr_accessible :email, :password, :admin, :as => :admin 
모델

WH에서 상기 광고를 추가하지 않고 컨트롤러

def create 
    @user = User.new(params[:user], :without_protection => true) 
    @user.admin = params[:user][:admin] == "1" 
    if @user.save 
     flash[:notice] = "User has been created." 
     redirect_to admin_users_path 
    else 
     flash[:alert] = "User has not been created." 
     render :action => "new" 
    end 
    end 

초 방법 ich 하나는 대량 할당에서 보호하거나 모두 무료입니까?

답변

1

모두 attr_accessible:without_protection => true 그들이에 정의되어 모델의 속성에 대한 대량 할당을 허용 할 수 있습니다.

을 너무 잘 차이는 다음과 무엇에 이는 사용할 수 있나요?

난 당신이 모든 대량 할당 할 모델의 속성 을 열어 :without_protection => true에 비해 대량 할당에 허용 할 속성을 정확하게 정의하기 때문에 attr_accessible이 더 사용하여 생각,이 문제에 대답합니다.

일반적으로 사용자 입력 내용을 정확히 알고 있으면 :without_protection => true을 전달하는 것이 좋습니다. 데이터를 시드 할 때. 그러나 양식 (사용자 입력)에서 오는 입력의 경우 대량 할당에 허용되는 것을 정확히 지정하려고합니다.

희망이 도움이됩니다.

업데이트 : 다음 문에서

, 당신은 attr_accessible에 공급하는 as 옵션은 속성 email, password and admin는 사용자가 admin 경우에만 허용되는지 확인합니다.

attr_accessible :email, :password, :admin, :as => :admin 
+0

관리자 생성을 위해 사용하고 싶습니다. 괜찮습니까? 그리고 또한 당신이 무엇을 설명 할 수 :로 : 관리자? 나는 그것을 모르기 때문에 .. –

+0

@Dexter, "관리자 생성을 허용하기 위해 그것을 사용하고 싶다"라고 말하면 조금 불분명하다. 어떻게 관리자를 만들고 있는가? – vee

+0

사용자 추가 양식의 확인란으로 표시하지만 관리자 만 사용자를 관리자로 만들 수 있습니다. –

관련 문제