strong rails permit new multiple ruby-on-rails strong-parameters

ruby-on-rails - new - rails permit param



Rieles 4: Insertar atributo en parĂ¡metros (3)

Además de la respuesta de @ timothycommoner, alternativamente puede realizar la fusión en función de cada acción:

def create @post = Post.new(post_params.merge(user_id: current_user.id)) # save the object etc end private def post_params params.require(:post).permit(:some_attribute) end

En Rails 3, fue posible insertar un atributo en params así:

params[:post][:user_id] = current_user.id

Estoy intentando hacer algo similar en Rails 4, pero no tengo suerte:

post_params[:user_id] = current_user.id . . . . private def post_params params.require(:post).permit(:user_id) end

Rails está ignorando esta inserción. No lanza ningún error, simplemente falla silenciosamente.


Como alternativa para este caso, puede requerir un atributo de paso a través del scope :

current_user.posts.create(post_params)


Encontré la respuesta here . En lugar de insertar el atributo desde la acción del controlador, puede insertarlo en la definición de parámetros con una combinación. Para ampliar mi ejemplo anterior:

private def post_params params.require(:post).permit(:some_attribute).merge(user_id: current_user.id) end