2017-01-06 12 views
0

私の関数の1つは、新しい代理店を作成することです。 paramsが提出されたフォームから来て、私のコントローラで私が使用します。いくつかのケースではRailsでパラメータを上書きする

agency_params 
     params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id) 
end 

(ユーザーの役割に応じて)私はどのPLATFORM_IDちょうど特定のものを許可する必要はありません。

だから、私の考えでした:

def agency_params 
     params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id) 

     if current_user.platform 
     params[:platform_id] = current_user.platform.id 
     end 
    end 

しかし、これは動作するようには思えません。どうすればいい?コントローラは適切な場所か、モデルの方が優れていますか?

ありがとうございます!私はあなたがあなたのコントローラメソッドでこのような何かをやっていると仮定してい

+1

は、あなたはそれが 'のparamsすべきだと思いませんか。 – 31piy

+0

ありがとうございました。ありがとう、@ 31piy – almo

答えて

0

:その場合は

def new 
    @agency = Agency.new(agency_params) 
    ... 
end 

agency_paramsnewメソッドに渡すパラメータのハッシュを返しています。あなたの例では、current_user.platformが真の場合、agency_paramsはパラメータハッシュを返しませんが、結果はparams[:platform_id] = current_user.platform_idです。

あなたは、パラメータのハッシュを返す前に:platform_idを変更する必要があります:[:代理店] [:PLATFORM_ID] = current_user.platform.id`

def agency_params 
    if current_user.platform 
     params[:agency][:platform_id] = current_user.platform.id 
    end 
    params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id) 
end 
関連する問題