Rails 4: Insert Attribute Into Params
As an alternative for this case, you can required pass attribute via scope
:
current_user.posts.create(post_params)
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
In addition to @timothycommoner's answer, you can alternatively perform the merge on a per-action basis:
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