Performance: Strong parameters
Strong parameters affect server-side request processing speed and security, indirectly impacting perceived page load speed by preventing unnecessary data processing.
def create User.create(user_params) end private def user_params params.require(:user).permit(:name, :email) end
def create
User.create(params[:user])
end| Pattern | Server Processing | Security Risk | Data Validation Cost | Verdict |
|---|---|---|---|---|
| No strong parameters (params[:user]) | High - processes all input | High - mass assignment risk | High - validates unnecessary data | [X] Bad |
| Using strong parameters (permit only needed) | Low - processes filtered input | Low - prevents mass assignment | Low - validates only needed data | [OK] Good |
strong parameters in a Rails controller?name and email attributes inside a user_params method?def create
user = User.new(user_params)
if user.save
render json: user
else
render json: user.errors
end
end
def user_params
params.require(:user).permit(:name, :age)
end{ user: { name: "Alice", age: 30, admin: true } }?:name and :age are permitted, so admin is filtered out.admin attribute is ignored and not set on the user -> Option Buser_params method:def user_params params.permit(:name, :email).require(:user) end
require must be called first to get the nested hash.permit before require causes an error because permit is called on the whole params, not the nested hash.require should be called before permit -> Option Aprofile with bio and avatar_url. Which user_params method correctly permits this nested data?permit.profile: [:bio, :avatar_url]. params.require(:user).permit(:name, :profile => :bio, :avatar_url) and C have syntax errors or wrong hash style. params.require(:user).permit(:name, :profile, :bio, :avatar_url) permits keys at top level incorrectly.Pass the test and this pattern moves unknown