以下の作成方法を使用して、一度に複数のレコードを作成できました。
  def create    
    rate_price = params[:rate][:rate]
    mlos = params[:rate][:mlos]
    start_date = Date.parse(params[:start_date])
    end_date = Date.parse(params[:end_date])
    dates = (start_date..end_date).to_a.select {|k| (params[:rate][:days]).reject(&:blank?).map(&:to_i).include?(k.wday)}
    room_ids = params[:rate][:room_ids].reject(&:blank?).map(&:to_i)
    @rates = []
    dates.zip(room_ids).each do |date, room_id|
      rate = Rate.new(:rate => rate_price, :mlos => mlos, :room_id => room_id, :dayrate => date )
      #rate = Rate.find_or_create_by_dayrate(date, :rate => rate_price, :mlos => mlos, :room_id => room_id)
      @rates << rate
    end
    @rates.map(&:save)
    respond_to do |format|
      if @rates.any? { |rate| !rate.persisted? } 
        format.html { render action: "new" }
        format.json { render json: @rates.detect { |rate| !rate.persisted? }.errors, status: :unprocessable_entity }
      else
        format.html { redirect_to :back, notice: 'Rates were successfully created.' }
        format.json { render json: @rates, status: :created, location: @rates }
      end
    end
  end
しかし、find_or_create_by(コード内のコメント行) を使用してレコード (既に存在する場合) を作成または更新する場合、レコードは更新されないようで、作成のみが機能します。私が見逃しているものはありますか?