Trs MTV
Trs MTV

Reputation: 67

How to update values that depend on strong params

I have an action (using strong parameters) in controller:

def home_task_params
  params.require(:home_task).permit(:subject, :description, :data)
end

I want to modify the data before recording to the database. I want to do something similar to this:

def create
  @home_task = HomeTask.create(
    :subject => home_task_params.subject,
    :description => home_task_params.description,
    :day => home_task_params.data,
    :data => home_task_params.data,
    :class_room => current_user.class_room
  )
end

How do I implement it?

Upvotes: 0

Views: 92

Answers (1)

spickermann
spickermann

Reputation: 107077

params is an object that behaves like a hash. Therefore you cannot read values from that object like this params.subject instead, you have to use params[:subject].

Something like this might work:

@home_task = HomeTask.create(
  :subject     => home_task_params[:subject], 
  :description => home_task_params[:description], 
  :day         => home_task_params[:data],
  :data        => home_task_params[:data], 
  :class_room  => current_user.class_room 
)

Or you could just merge the additional values to params:

@home_task = HomeTask.create(
  home_task_params.merge(
    day: home_task_params[:data], 
    class_room: current_user.class_room
  )
)

Upvotes: 1

Related Questions