Ruby on Rails - Creating many models associated with another one So I have the following models:

class Poll &lt; ApplicationRecord
    validates :title, presence: true, allow_blank: false
    validates :options, presence: true

    has_many :options, dependent: :destroy
end

class Option &lt; ApplicationRecord
    validates :title, presence: true, allow_blank: false

    belongs_to :poll
end



And given the following data:

{
    title: "My poll",
    options: [
        {title: "Option 1"},
        {title: "Option 2"},
        {title: "Option 3"},
    ]
}


I would like to create a poll with 3 options.

This is my solution:

    # POST /polls
    def create
        @poll = Poll.new(poll_params)

        params[:options].each do |option|
            @poll.options.new option.permit(:title)
        end

        if @poll.save
            render json: @poll, status: :created, location: @poll
        else
            render json: @poll.errors.full_messages, status: :unprocessable_entity
        end
    end
You should be able to do this with accepts_nested_attributes_for.
  see https://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for

class Poll &lt; ApplicationRecord
    validates :title, presence: true, allow_blank: false
    validates :options, presence: true

    has_many :options, dependent: :destroy
    accepts_nested_attributes_for :options 
end

def poll_params
  params.require(:poll).permit(:title,
                               options: :title)
end 

def create
    @poll = Poll.new(poll_params)

    if @poll.save
        render json: @poll, status: :created, location: @poll
    else
        render json: @poll.errors.full_messages, status: :unprocessable_entity
    end
end