2

레일 4의 strong_params를 사용하면이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 아래의 솔루션을 사용했지만 이것이 최선의 방법인지 확실하지 않습니다.레일 4 : 컨트롤러에서 다른 모델의 오브젝트를 생성하는 올바른 방법

예 (그래도 작동) : (! 바로 가기 버전)

game_controller.rb

# inside game controller we want to build an Participant object 
# using .require fails, using .permits goes true 
def GameController < ApplicationController 
    def join_game_as_participant 
     @participant = Participant.new(participant_params) 
    end 
end 

def participant_params 
    params.permit(:participant, 
        :participant_id, 
        :user_id, 
        :confirmed).merge(:user_id => current_user.id, 
            :game_id => params[:game_id]) 
end 

답변

3

당신의 participant_params 방법은 private해야하고 require 방법을 사용해야합니다

private 
    def participant_params 
    params.require(:participant).permit(
     :participant_id, :user_id, :confirmed 
    ).merge(
     :user_id => current_user.id, :game_id => params[:game_id] 
    ) 
    end 

희망 도움말