Rails 4: Insert Attribute Into Params

ruby-on-rails, strong-parameters

Solution

Found the answer here. Rather than inserting the attribute from within the controller action, you can insert it into the params definition with a merge. To expand upon my previous example:

private

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

Problem

In Rails 3, it was possible to insert an attribute into params like so: ``` params[:post][:user_id] = current_user.id ``` I'm attempting to do something similar in Rails 4, but having no luck: ``` post_params[:user_id] = current_user.id . . . . private def post_params params.require(:post).permit(:user_id) end ``` Rails is ignoring this insertion. It doesn't throw any errors, it just quietly fails.

Original source