ruby on rails - How to modify params before creating an object -


i'm using nested attributes create photo , comment object. set author on comment, nested inside photo.

here params:

photo: {   file: 'hi.jpg',   comments_params: [     { content: "hello world!" }   ] } 

but add author comment.

  # ...   comments_params: [     { content: "hello world!", author: current_user }   ]   # ... 

what's easiest way this? controller code looks this.

@photo = photo.new(photo_params) @photo.save!  private  def photo_params   params.require(:photo).permit(:file, comments_attributes: [:content]) end 

i can manipulating params after filtering them strong_parameters (pseudo-code, idea stands), rather not.

photo_params[:comments_attributes].each |comment|   comment[:author] = current_user end 

but feels bit wrong.

instead of messing params, assign author now-existing objects:

@photo = photo.new(photo_params) @photo.comments.select(&:new_record?).each {|c| c.author = current_user } @photo.save! 

Comments

Popular posts from this blog

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

html - Outlook 2010 Anchor (url/address/link) -

android - How to create dynamically Fragment pager adapter -