Rails 4: правильный способ создания объектов из другой модели из контроллера

Используя strong_params из Rails 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

1 ответ

Решение

Ваш 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

Надеюсь это поможет

Другие вопросы по тегам